繁体   English   中英

如果等待超过10秒,Python硒刷新

[英]Python selenium refresh if wait more than 10s

from selenium import webdriver    
driver=webdriver.Firefox() 
driver.get(url)

有时,webdriver卡在文件或响应上,并且页面从未满载,因此该行

driver.get(url) 

永远不会结束。 但是我已经有足够的源代码来运行其余的代码。 我想知道如果10秒钟内页面未满载时该如何绕过或刷新页面。

我努力了

from selenium import webdriver
from selenium.common.exceptions import TimeoutException    
driver=webdriver.Firefox() 
driver.set_page_load_timeout(10)
while True:
    try:
        driver.get(url)
    except TimeoutException:
        print("Timeout, retrying...")
        continue
    else:
        break

但是线

driver.set_page_load_timeout(10)

总是给我以下错误

  File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/selenium/webdriver/remote/webdriver.py", line 727, in set_page_load_timeout
'pageLoad': int(float(time_to_wait) * 1000)})
  File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/selenium/webdriver/remote/webdriver.py", line 238, in execute
self.error_handler.check_response(response)
  File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/selenium/webdriver/remote/errorhandler.py", line 193, in check_response
raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.WebDriverException: Message: 

消息:之后什么也没有。 我无法确定错误的类型。 我的笔记本电脑无法运行很奇怪

driver.set_page_load_timeout(10)

我的下一步是单击页面上的一个按钮,但是即使在满载后,该按钮也不总是存在。 因此,我不能使用显式等待。

谢谢

(在您的代码段中,您没有定义URL,但是我假设URL在实际代码中的某个位置定义。)

您可以为此组合retrytimeout-decorator软件包:

from retry import retry
from timeout_decorator import timeout, TimeoutError
from selenium import webdriver
from selenium.common.exceptions import TimeoutException    

@retry(TimeoutError, tries=3)
@timeout(10)
def get_with_retry(driver, url):
    driver.get(url)


def main():
    url = "http://something.foo"

    driver=webdriver.Firefox() 
    try:
        get_with_retry(driver, url)
        foo(driver) # do whatever it is you need to do
    finally:
        driver.quit()


if __name__ == "__main__":
    main()

请注意,您可能不需要将driver.set_page_load_timeout设置为任何值,或者将其设置为高于10秒的值。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM