Selenium3+python自動化007-等待時間

import timehtml

1、強制等待web

sleep(秒)chrome

 

2、顯示等待瀏覽器

使WebDriver等待指定元素條件成立時繼續執行,不然在達到最大時長時拋出超時異常(TimeoutException)ide

1. 導包 等待類 --> from selenium.webdriver.support.wait import WebDriverWait
2. 導包 判斷條件 --> from selenium.webdriver.support import expected_conditions as EC
(將expected_conditions 經過as關鍵字起個別名:EC)
3. WebDriverWait(driver, timeout, poll_frequency=0.5)
1). driver:瀏覽器對象
2). timeout:超時的時長,單位:秒
3). poll_frequency:檢測間隔時間,默認爲0.5秒
4. 調用方法 until(method):直到..時
1). method:調用EC.presence_of_element_located(element)
element:調用By類方法進行定位測試

WebDriverWait(driver,30).until(EC.presence_of_element_located((By.ID,'userA')))ui

 1 # 導selenium包顯示等待
 2 from selenium import webdriver
 3 from time import sleep
 4 
 5 # 訪問chromedriver.exe
 6 chromedriver = (r"C:\Users\Administrator.PC-20181218JDBK\AppData\Local\Google\Chrome\Application\chromedriver.exe")
 7 
 8 # 訪問驅動
 9 driver = webdriver.Chrome(chromedriver)
10 # 實例化瀏覽器對象
11 # driver=webdriver.Chrome()
12 
13 # 定義url
14 url='D:\\pycharm\\lebohtml\\自動化05期-007-Selenium經常使用定位方法\\html\\註冊A.html'
15 # 實例化瀏覽器對象
16 # driver=webdriver.Chrome()
17 
18 
19 # 打開url
20 driver.get(url)
21 
22 from selenium.webdriver.support.wait import WebDriverWait
23 from selenium.webdriver.support import expected_conditions as EC
24 from selenium.webdriver.common.by import By
25 
26 # 調用顯式等待
27 ele=WebDriverWait(driver,10).until(EC.presence_of_element_located((By.ID,'userA')))
28 ele.send_keys('admin')
29 
30 
31 # 第一種寫法
32 # driver.find_element_by_id('userA').send_keys('admin')
33 
34 # 等待3秒
35 sleep(3)
36 
37 # 關閉瀏覽器
38 driver.quit()
顯示等待

顯示等待的優缺點:url

優勢:顯示等待比隱式等待更節約測試腳本執行時間spa

缺點:每一個操做須要單獨判斷code

 

3、隱式等待

若是定位某一元素定位失敗,那麼就會觸發隱式等待有效時長,若是在指定時長內加載完畢,則繼續執行,不然

拋出NoSuchElementException異常,若是元素在第一次就定位到則不會觸發隱式等待時長;

driver.implicitly_wait(timeout);

 1 # 導selenium包
 2 from selenium import webdriver  3 from time import sleep  4 
 5 # 訪問chromedriver.exe
 6 chromedriver = (r"C:\Users\Administrator.PC-20181218JDBK\AppData\Local\Google\Chrome\Application\chromedriver.exe")  7 
 8 # 訪問驅動
 9 driver = webdriver.Chrome(chromedriver) 10 # 實例化瀏覽器對象
11 # driver=webdriver.Chrome()
12 
13 # 定義url
14 url='D:\\pycharm\\lebohtml\\自動化05期-007-Selenium經常使用定位方法\\html\\註冊A.html'
15 # 實例化瀏覽器對象
16 # driver=webdriver.Chrome()
17 
18 
19 # 打開url
20 driver.get(url) 21 
22 # 調用飲食等待
23 driver.implicitly_wait(10) 24 driver.find_element_by_id('userA').send_keys('admin') 25 # 等待3秒
26 sleep(3) 27 
28 # 關閉瀏覽器
29 driver.quit()
隱式等待

隱式等待的優缺點: 

優勢:只須要設置一次,在driver的整個生命週期起做用

缺點:程序會一直等待整個頁面加載完成,也就是說瀏覽器窗口標籤欄中不在出現轉動的小圓圈,纔會繼續執行下一步。這樣,想要獲取的元素即便已經加載完成,也須要等待整個頁面加載完成才能繼續執行下一步

相關文章
相關標籤/搜索