人妖在线一区,国产日韩欧美一区二区综合在线,国产啪精品视频网站免费,欧美内射深插日本少妇

新聞動(dòng)態(tài)

python自動(dòng)化測(cè)試selenium核心技術(shù)三種等待方式詳解

發(fā)布日期:2021-12-11 10:56 | 文章來源:CSDN

UI自動(dòng)化測(cè)試過程中,可能會(huì)出現(xiàn)因測(cè)試環(huán)境不穩(wěn)定、網(wǎng)絡(luò)慢等情況,如果不做任何處理的話,會(huì)出現(xiàn)無法定位到特定元素而報(bào)錯(cuò),導(dǎo)致自動(dòng)化測(cè)試無法順利執(zhí)行。

selenium官網(wǎng)手冊(cè):Waits | Selenium

slenium自動(dòng)化測(cè)試中,主要涉及三種等待方式:

1 使用python自帶模塊time的sleep方式

缺點(diǎn):即使網(wǎng)絡(luò)條件較好時(shí),依舊按照預(yù)定固定時(shí)間等待,一般不建議使用,腳本調(diào)試可使用。

示例腳本:

from selenium import  webdriver
from time import sleep
class TestWait(object):
 driver = webdriver.Chrome()
 driver.get(http://www.baidu.com) 
 def test_sleep(self):
  self.driver.find_element_by_id("kw").send_keys("sleep test")
  # sleep(2) #等待固定時(shí)間
  self.driver.implicitly_wait(2)  # 隱式等待
  self.driver.find_element_by_id("su").click()
  self.driver.quit()
if __name__ == '__main__':
 wait=TestWait()
 wait.test_sleep()

2 隱式等待(implicitly_wait)

隱式等待設(shè)置的時(shí)間是最長的時(shí)間,如果在規(guī)定時(shí)間內(nèi)網(wǎng)頁加載完成,則執(zhí)行下一步,否則一直等到時(shí)間結(jié)束,然后執(zhí)行下一步。

注意:隱式等待對(duì)driver整個(gè)周期都起作用,一般在最開始設(shè)置一次就可以了。不要當(dāng)做固定等待,哪里都設(shè)置隱式等待。

示例腳本:

from selenium import  webdriver
from time import sleep 
class TestWait(object):
 driver = webdriver.Chrome()
 driver.get(http://www.baidu.com) 
 def test_sleep(self):
  self.driver.find_element_by_id("kw").send_keys("sleep test")
  self.driver.implicitly_wait(2)  # 隱式等待
  self.driver.find_element_by_id("su").click()
  self.driver.quit()
if __name__ == '__main__':
 wait=TestWait()
 wait.test_sleep()

3 顯示等待(WebDriverWait)

顯式等待允許等待條件的發(fā)生,所以非常適合在瀏覽器及其DOM和WebDriver腳本之間同步狀態(tài)。

需要引入包:from selenium.webdriver.support.wait import WebDriverWait

WebDriverWait參數(shù)說明:

WebDriverWait(driver, timeout=3).until(some_condition)

兩種方法:until和util_not

場(chǎng)景:

打開百度首頁,等待頁面標(biāo)題出現(xiàn):百度一下,你就知道,再執(zhí)行輸入搜索關(guān)鍵詞,點(diǎn)擊“百度一下”按鈕。

示例腳本:

from selenium import webdriver
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.support import expected_conditions as ec
class TestWait(object):
 def setup(self):
  self.driver = webdriver.Chrome()
  self.driver.get(http://www.baidu.com) 
 def test_webdreiverwait(self):
  webdreiverwaits =WebDriverWait(self.driver,2)
  webdreiverwaits.until(ec.title_is("百度一下,你就知道"))
  self.driver.find_element_by_id("kw").send_keys("test_webdreiverwait test")
  self.driver.find_element_by_id("su").click() 
 def teardown(self):
  self.driver.quit() 
if __name__ == '__main__':
 wait=TestWait()
 wait.test_webdreiverwait()

三種等待完整示例腳本:

from selenium import webdriver
from time import sleep
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.support import expected_conditions as ec
class TestWait(object):
 def setup(self):
  self.driver = webdriver.Chrome()
  self.driver.get("http://www.baidu.com")
  def test_sleep(self):
  self.driver.find_element_by_id("kw").send_keys("sleep test")
  sleep(2) #等待固定時(shí)間
  self.driver.find_element_by_id("su").click()  
 def test_implicitly(self):
  self.driver.find_element_by_id("kw").send_keys("implicitly test")
  self.driver.implicitly_wait(2)  # 隱式等待
  self.driver.find_element_by_id("su").click() 
 def test_webdreiverwait(self):
  webdreiverwaits =WebDriverWait(self.driver,2)
  webdreiverwaits.until(ec.title_is("百度一下,你就知道"))
  self.driver.find_element_by_id("kw").send_keys("test_webdreiverwait test")
  self.driver.find_element_by_id("su").click() 
 def teardown(self):
  self.driver.quit() 
if __name__ == '__main__':
 wait=TestWait()
 # wait.test_sleep()
 # wait.test_implicitly()
 wait.test_webdreiverwait()

【常見問題】:運(yùn)行腳本報(bào)empty suite:

from selenium import  webdriver
from time import sleep
class TestWait(object):
 def __init__(self):
 	self.driver = webdriver.Chrome()
 	self.driver.get('http://www.baidu.com') 
 def test_sleep(self):
  self.driver.find_element_by_id("kw").send_keys("sleep test")
  # sleep(2) #等待固定時(shí)間
  self.driver.implicitly_wait(2)  # 隱式等待
  self.driver.find_element_by_id("su").click()
  self.driver.quit()
if __name__ == '__main__':
 wait=TestWait()
 wait.test_sleep()

【解決方法】:腳本修改

from selenium import webdriver
from time import sleep
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.support.wait import WebDriverWait 
class TestCase(object): 
 def setup(self):
  self.driver = webdriver.Chrome()
  self.driver.get('http://www.baidu.com')
  # sleep(2) 
 def test_sleep(self):
  self.driver.find_element_by_id('kw').send_keys('selenium')
  # sleep(2) # 線程阻塞 blocking wait
  self.driver.find_element_by_id('su').click()
  # sleep(3)  
 def test_implicitly(self):
  self.driver.implicitly_wait(10)
  self.driver.find_element_by_id('kw').send_keys('selenium')
  # sleep(2) # 線程阻塞 blocking wait
  self.driver.find_element_by_id('su').click()
  # sleep(3) 
  def test_wait(self):
  wait = WebDriverWait(self.driver,2)
  wait.until(EC.title_is('百度一下,你就知道'))
  self.driver.find_element_by_id('kw').send_keys('selenium')
  # sleep(2) # 線程阻塞 blocking wait
  self.driver.find_element_by_id('su').click()
  # sleep(3)
 def teardown(self):
  self.driver.quit() 
if __name__ == '__main__':
 case = TestCase()
 # case.test_sleep()
 # case.test_implicitly()
 case.test_wait()

以上:極客時(shí)間課程:selenium自動(dòng)化測(cè)試學(xué)習(xí)總結(jié)!

以上就是python自動(dòng)化測(cè)試selenium核心技術(shù)三種等待方式詳解的詳細(xì)內(nèi)容,更多關(guān)于selenium三種等待方式的資料請(qǐng)關(guān)注本站其它相關(guān)文章!

版權(quán)聲明:本站文章來源標(biāo)注為YINGSOO的內(nèi)容版權(quán)均為本站所有,歡迎引用、轉(zhuǎn)載,請(qǐng)保持原文完整并注明來源及原文鏈接。禁止復(fù)制或仿造本網(wǎng)站,禁止在非www.sddonglingsh.com所屬的服務(wù)器上建立鏡像,否則將依法追究法律責(zé)任。本站部分內(nèi)容來源于網(wǎng)友推薦、互聯(lián)網(wǎng)收集整理而來,僅供學(xué)習(xí)參考,不代表本站立場(chǎng),如有內(nèi)容涉嫌侵權(quán),請(qǐng)聯(lián)系alex-e#qq.com處理。

相關(guān)文章

實(shí)時(shí)開通

自選配置、實(shí)時(shí)開通

免備案

全球線路精選!

全天候客戶服務(wù)

7x24全年不間斷在線

專屬顧問服務(wù)

1對(duì)1客戶咨詢顧問

在線
客服

在線客服:7*24小時(shí)在線

客服
熱線

400-630-3752
7*24小時(shí)客服服務(wù)熱線

關(guān)注
微信

關(guān)注官方微信
頂部