from selenium.webdriver.support.ui import webdriverwait使用find_elements和find_element 會有加入顯式等待的效果 比一般的強制等待sleep的用法好用,會提高指令碼執行的速度。from selenium.common.exceptions import nosuchelementexception, timeoutexception
from selenium import webdriver
class base(object):
def __init__(self):
self.driver = webdriver.chrome()
self.driver.maximize_window()
def find_element(self, by, locator, timeout=30):
""":param by: 定位方式 eg:by.id
:param locator: 定位表示式
:param timeout: 顯式等待的超時時間
:return:
"""try:
element = webdriverwait(self.driver, timeout).until(lambda driver: driver.find_element(by, locator))
# webdriverwait(self.driver, timeout, 0.5).until(ec.visibility_of_element_located(by, locator))
except(nosuchelementexception, timeoutexception) as e:
raise e
else:
return element
def find_elements(self, by, locator, timeout=30):
""":param by: 定位方法eg:by.id
:param locator: 定位表示式
:param timeout: 顯式等待超時時間
:return:
"""try:
elements = webdriverwait(self.driver, timeout).until(lambda driver: driver.find_elements(by, locator))
# webdriverwait(self.driver, timeout, 0.5).until(ec.visibility_of_element_located(by, locator))
except(nosuchelementexception, timeoutexception) as e:
raise e
else:
return elements
專案實戰 使用顯式等待無法處理的情況
selenium裡有三種等待方式 隱式等待 載入完瀏覽器開始呼叫,作用域是當前控制代碼的全域性 dr.implicitly wait 20 強制等待 建議少用,非必須不用 import time time.sleep 3 強制等待3秒 顯式等待 建議使用,但有時候作用並不大 webdriverwai...
等待頁面某元素載入完成的方法
一 先在allocationcommon中寫個方法 等待頁面某元素載入完成 引數 type元素定位型別 by該型別對應的定位值 public static void load string type,string by else if id equals type else if name equa...
dll檔案的隱式呼叫和顯式呼叫(方法示例)
隱式呼叫 隱式呼叫有兩種方法 1 需要dll檔案 lib檔案和標頭檔案 示例 declspec dllimport int add int a,int b declspec dllimport int subtract int a,int b 匯出乙個c 類 class declspec dllim...