五月综合激情婷婷六月,日韩欧美国产一区不卡,他扒开我内裤强吻我下面视频 ,无套内射无矿码免费看黄,天天躁,日日躁,狠狠躁

新聞動態(tài)

python自動化測試selenium核心技術三種等待方式詳解

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

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

selenium官網手冊:Waits | Selenium

slenium自動化測試中,主要涉及三種等待方式:

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

缺點:即使網絡條件較好時,依舊按照預定固定時間等待,一般不建議使用,腳本調試可使用。

示例腳本:

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) #等待固定時間
  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)

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

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

示例腳本:

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參數說明:

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

兩種方法:until和util_not

場景:

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

示例腳本:

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) #等待固定時間
  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()

【常見問題】:運行腳本報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) #等待固定時間
  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()

以上:極客時間課程:selenium自動化測試學習總結!

以上就是python自動化測試selenium核心技術三種等待方式詳解的詳細內容,更多關于selenium三種等待方式的資料請關注本站其它相關文章!

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

相關文章

實時開通

自選配置、實時開通

免備案

全球線路精選!

全天候客戶服務

7x24全年不間斷在線

專屬顧問服務

1對1客戶咨詢顧問

在線
客服

在線客服:7*24小時在線

客服
熱線

400-630-3752
7*24小時客服服務熱線

關注
微信

關注官方微信
頂部