日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網為廣大站長提供免費收錄網站服務,提交前請做好本站友鏈:【 網站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

遇到網頁加載慢,selenium運行效率降低,可以通過修改頁面加載策略提升自動化效率。

selenium加載很慢

通過URL導航到新頁面時,默認情況下,Selenium將等待文檔完全被加載才會執行下面的操作,此時網頁的加載狀態為 complete。

這種狀態可以在瀏覽器中通過document.readyState獲取,當網頁沒有完全加載時,顯示為interactive,加載完成后顯示complete。頁面加載完成后,再試圖訪問其他JAVAScript 動態加載的內容。

 

如果網頁打開速度很慢,可能是由于加載了一些非常耗時的內容,比如圖像、css文件和JS文件,此時會在頁面中出現正在加載的圈圈。

 

設置 set_page_load_timeout 解決

對于一些加載比較慢的資源,在進行自動化測試的時候沒有必要等到所有的元素加載完成,再進行元素定位。

設置一個超時時間,如果頁面加載超過了指定時間,手工終止頁面,相當于用手點擊瀏覽器的 X 按鈕,讓頁面停止加載。

# 設置加載超時時間為 5 sdriver.set_page_load_timeout(5)try:return driver.get(url)except TimeoutException:# 調用 js 腳本終止頁面加載driver.execute_script("window.stop()")

代碼有 3 個點:

  • 1, 設置超時時間為 5 秒
  • 2, 執行 driver.get(url) 時,頁面加載如果不超過 5 秒,不會報錯,超過 5 秒,會拋出超時異常
  • 3, 使用 TimeoutException 捕獲超時異常。當超時后,執行 js 指定,終止頁面加載。

接下來,封裝頁面 get 方法:

class IndexPage():    url = '<http://jiubing> '    def __init__(self, driver, load_timeout=5):        self.driver = driver        self.driver.set_page_load_timeout(load_timeout)    def get(self):        try:            return self.driver.get(self.url)        except TimeoutException:            self.driver.execute_script("window.stop()")    ...

其他的代碼都不需要發生變化,只需要在加載耗時的地方添加 IndexPage(driver).get() 讓頁面按照設置的超時時間加載就可以了。

新的測試時間為 11.3 秒, 測試效率提升將近 60%。

應用

在網頁加載比較慢的情況下,把加載策略pageLoadStrategy設成eager或者none能有效提升自動化腳本的速度,但是這種方式不是十全十美的,由于還有資源沒有加載完成,它可能會導致之后的元素定位失敗,從而造成脆弱的測試。在實踐中還是應該結合具體情況來設置。

一般使用默認加載策略,只有部分頁面確實非常耗時,并且未加載的元素不會影響后面的定位才會視圖修改加載策略。

分享到:
標簽:Selenium
用戶無頭像

網友整理

注冊時間:

網站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網站吧!
最新入駐小程序

數獨大挑戰2018-06-03

數獨一種數學游戲,玩家需要根據9

答題星2018-06-03

您可以通過答題星輕松地創建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學四六

運動步數有氧達人2018-06-03

記錄運動步數,積累氧氣值。還可偷

每日養生app2018-06-03

每日養生,天天健康

體育訓練成績評定2018-06-03

通用課目體育訓練成績評定