簡體   English   中英

Selenium webdriver driver.get(url)有時掛起......

[英]Selenium webdriver driver.get(url) hangs… sometimes

我正在使用PhantomJS作為webdriver加載一些網址。 通常,程序運行正常。 但是,它很多地依賴於driver.get(url) ,我想知道我能做些什么呢?

driver = webdriver.PhantomJS(executable_path= path_to_phantomjs_exe, service_log_path= path_to_ghostdriver_log)
driver.get(url)

它會掛起試圖永遠加載某個網址。 但如果我再試一次,它可能會奏效。 webdrivers / phantomJS真的那么不穩定嗎? 我猜最后的辦法是不斷調用driver.get(url)直到它最終加載,但這真的是必要的嗎? 謝謝!

編輯:它似乎只在從列表中加載第一個鏈接時掛起。 然而,它最終會加載,但幾分鍾后。 其余的鏈接在幾秒鍾內加載。 任何幫助都會很棒。

我已經在這篇文章中回答了這個確切的問題: Geb / Selenium測試掛起加載新頁面但是在這里復制它因為我看到這個問題比較老了。

我希望你能找到一種方法將它實現到你的代碼中,但是當我遇到與PhantomJS掛起的類似情況時,這對我有用。

我跟蹤它是掛在一個driver.get()調用,這對我來說是說某些事情沒有通過或webdriver只是沒有 - 出於某種原因 - 將加載成功命令返回給驅動程序,允許腳本繼續。

所以,我添加了以下內容:

driver = webdriver.PhantomJS()

# set timeout information
driver.set_page_load_timeout(15)

我已經在5(秒)的時間測試了它,它沒有等待足夠長的時間也沒有發生任何事情。 15秒對我很有用,但這可能是你應該測試的東西。

除此之外,每當有一個webdriver的選項超時時我也創建了一個循環,這樣driver.get()可以嘗試重新發送.get()命令。 實現try / except堆疊場景,我能夠接近這個:

while finished == 0:
    try:
        driver.get(url3)
        finished = 1
    except:
        sleep(5)

我見過一個除了句柄:

except TimeoutException as e:
    #Handle your exception here
    print(e)

但我對此毫無用處。 但是,知道如何捕獲特定的異常可能會很好。

有關超時的更多選項,請參閱此解決方案:在selenium webdriver.PhantomJS上設置超時

所以我遇到了同樣的問題:

driver = webdriver.PhantomJS(executable_path= path_to_phantomjs_exe, service_log_path= path_to_ghostdriver_log)
driver.get(url)

所以我將service_log_path更改為:

service_log_path=os.path.devnull

這似乎對我有用!!!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM