selenium webdriver——設置元素等待


>>如今大多數Web應用程序使用ajax技術,當瀏覽器在加載頁面時,頁面上的元素可能並不是同時被加載完成,這給定位元素的定位增加了困難,

 如果因為在加載某個元素時延遲而造成ElementNotVisibleException(不可見元素異常)的情況出現,那么就會降低自動化腳本的穩定性,設置

 元素等待可改善這種問題造成的不穩定。

 >>WebDriver提供了兩種類型的等待:

  >>顯示等待:

   具體格式如下:

 1 #Author:xiaoxiao
 2 from selenium import webdriver  3 from selenium.webdriver.common.by import By  4 from selenium.webdriver.support.ui import WebDriverWait  5 from selenium.webdriver.support import expected_conditions as ec  6 
 7 def abc():  8     #打開瀏覽器
 9     driver = webdriver.Firefox() 10     driver.get('http://www.baidu.com') 11     #顯示等待
12     element = WebDriverWait(driver,5,0.5).until(ec.presence_of_all_elements_located((By.ID,"kw"))) 13     driver.find_element_by_id("kw").send_keys("selenium")
WebDriverWait(driver,timeout,poll_frequency=0.5,ignored_exceptions).until()

driver:瀏覽器驅動
timeout:最長超時時間,默認以秒為單位
poll_frequency:檢測的間隔(步長)時間,默認為0.5S
ignored_exceptions:超時后的異常信息,默認情況下拋NoSuchElementException
WebDriverWait()一般由until()或until_not()方法配合使用,下面是方法說明
until(method,message='')
調用該方法提供的驅動程序作為一個參數,直到返回值為True
until_not(method,message='')
調用該方法提供的驅動程序作為一個參數,直到返回值為False
presence_of_all_elements_located()
判斷元素是否存在

  >>隱式等待:

   通過一定的時長等待頁面上某元素加載完成,如果超出了設置的時長元素還沒有被加載,則拋出NoSuchElementException異常,WebDriver

   提供了implicitly_wait()方法來實現隱式等待,默認設置為0

1 #Author:xiaoxiao
2 from selenium import webdriver 3 
4 def abc(): 5     #打開瀏覽器
6     driver = webdriver.Firefox() 7     #隱式等待 設置等待時間為10秒
8     driver.implicitly_wait(10) 9     driver.get('http://www.baidu.com')

 >>sleep休眠方法

  在腳本執行中固定休眠

 1 #Author:xiaoxiao
 2 from selenium import webdriver
 3 from time import sleep
 4 
 5 def abc():
 6     #打開瀏覽器
 7     driver = webdriver.Firefox()
 8     driver.get('http://www.baidu.com')
 9     sleep(3)
10     driver.quit()

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM