selenium2+python設定等待時間
設定等待時間有三種方法:
1.implicitly_wait(self, time_to_wait)
此方法在每個指令碼中只設定一次就可以了,其作用為設定一個超時等待時間,如一個語句完成超時時間或者等待一個元素被發現的超時時間,
例如設定為30s,則如果在指令碼執行時一個元素無法被找到,會發現在30s後才結束指令碼提示失敗;
2.WebDriverWait(object)
此方法為一個動態等待,可以在設定的timeout時間內進行等待並搜尋,其api引數如下:
WebDriverWait(object):
def __init__(self, driver, timeout, poll_frequency=POLL_FREQUENCY, ignored_exceptions=None):
"""Constructor, takes a WebDriver instance and timeout in seconds.
:Args:
- driver - Instance of WebDriver (Ie, Firefox, Chrome or Remote) 此為一個物件,如設定的driver=webdriver.Firefox()
- timeout - Number of seconds before timing out 超時時間
- poll_frequency - sleep interval between calls 預設的在超時時間內兩次等待的時間,預設為0.5s
By default, it is 0.5 second.
- ignored_exceptions - iterable structure of exception classes ignored during calls. 在等待時間內需要忽略的異常(此不常用)
用法:
由於在html中有的div是在某個動作如點選完成後才會顯示,如一些視窗,下拉列表等通常為disable:none狀態.
那麼使用此方法可以動態等待視窗或者下拉列表變為disable狀態,以進行下一步動作.
此函式通常和until或者until_not函式一起用,以until為例:
WebDriverWait(driver,3).until(lambda driver:driver.find_element_by_xpath(project_dir['xpath_edit_panel']).is_displayed(), "panel open fail")
或者也可以使用如下方式:
dri=driver.find_element_by_xpath(project_dir['xpath_edit_panel']).is_displayed()
WebDriverWait(driver,3).until(dri, "panel open fail")
另附上until()語法,此函式有兩個引數,第一個為一個表示式,其值或者返回值應當為true或者false,第二個引數為一個字串,可不寫
3.time.sleep(seconds)
此方法需先匯入time模組,會根據設定固定等待一段時間,較為常用,如等待頁面生成某個元素等,
使用較為簡單,如time.sleep(3)即為等待3s鍾.