生活随笔
收集整理的這篇文章主要介紹了
python—web页面操作之3种等待方式
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
一、強制等待
在web自動化測試中,有時候為了提高效率,要避免使用強制等待
使用場合:1、調試代碼的時候;2、文件上傳(系統的上傳界面)
time.sleep(6)
import time
from selenium
import webdriver
driver
=webdriver
.Chrome
() driver谷歌瀏覽器對象driver
.get
('http://www.sogou.com') 打開搜狗瀏覽器
driver
.find_element_by_xpath
('//input[@maxlength="100"]').send_keys
('nba')
driver
.find_element_by_xpath
('//input[@value="搜狗搜索"]').click
()
time
.sleep
(2)
driver
.find_element_by_xpath
('//p[@class="title-summary "]').click
()
為什么找不見元素?
因為確實沒有這個元素,點擊搜狗搜索后,頁面處于加載中,而代碼執行完點擊搜索后,會立即執行下一行代碼,所以元素沒有找到
需要休眠一下
time.sleep(2)
二、隱形等待
1、只需要在打開瀏覽器的時候,設置隱形等待的超時時間,之后就不需要設置第二次,全局生效
2、如果隱形等待時間設置為10,driver.implicitly_wait(10):每次查找元素的時候,都有10s的時間去等待某個元素出現
3、打開瀏覽器馬上加上隱形等待,養成習慣
4、局限性:對某些個元素的狀態無法判斷
from selenium
import webdriverdriver
=webdriver
.Chrome
() driver谷歌瀏覽器對象
driver
.implicitly_wait
(10)
driver
.get
('http://www.sogou.com')
driver
.find_element_by_xpath
('//input[@name="query"]').send_keys
('NBA')
driver
.find_element_by_xpath
('//input[@type="submit"]').click
()
driver
.find_element_by_xpath
('//p[@class="title-summary "]').click
()
print(driver
.current_url
)
設置隱形等待時間,時間是全局生效的,每個元素都需要等待10s
driver.implicitly_wait(10)
為什么不設置成6000s,因為當元素不存在的時候,會真的會等待6000s
三、顯性等待
等待元素出現
等待元素可以被點擊
等待元素可見(已經加載出來,但是不可見)
用法
wait
wait.until()
locator
from selenium
import webdriver
from selenium
.webdriver
.support
.wait
import WebDriverWait
from selenium
.webdriver
.support
import expected_conditions driver
=webdriver
.Chrome
() driver谷歌瀏覽器對象
driver
.implicitly_wait
(10)
driver
.get
('http://www.sogou.com')
driver
.find_element_by_xpath
('//input[@type="text"]').send_keys
('nba')
driver
.find_element_by_xpath
('//input[@value="搜狗搜索"]').click
()wait
=WebDriverWait
(driver
,10,poll_frequency
=0.2)
locator
=('xpath','//p[@class="title-summary "]')
el
=wait
.until
(expected_conditions
.presence_of_element_located
(locator
))
el
.click
()print('hello world')
print(driver
.current_url
)
四、顯性等待具體操作
顯性等待路徑
from selenium.webdriver.support.wait import WebDriverWait
內置條件放在那?
from selenium.webdriver.support import expected_conditions
1、初始化一個等待器,需要傳3個參數
driver
timeout
poll_frequency
wait=WebDriverWait(driver,10,poll_frequency=0.2)
2、等待某個條件的發生,返回ture、false
導入條件可以自己定義,通常可以選用內置條件
3、準備元素的定位表達式
locator=(‘xpath’,’//p[@class="title-summary "]’)
el=wait.until(expected_conditions.presence_of_element_located(locator))
el.click()
總結
以上是生活随笔為你收集整理的python—web页面操作之3种等待方式的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。