1. 程式人生 > >selenium2+python設定等待時間

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鍾.