gpt4 book ai didi

Python selenium 等待页面无条件加载

转载 作者:行者123 更新时间:2023-12-01 09:19:41 25 4
gpt4 key购买 nike

我希望 Selenium 在截图之前等待。当我使用 time.sleep(1) 时,它给了我这个错误:

回溯(最近一次调用最后一次): 文件“test.py”,第 12 行,位于 driver.save_screenshot('page.png') 文件“/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/selenium/webdriver/remote/webdriver.py”,第 1033 行,在 save_screenshot 中 返回 self.get_screenshot_as_file(文件名) 文件“/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/selenium/webdriver/remote/webdriver.py”,第 1010 行,在 get_screenshot_as_file 中 png = self.get_screenshot_as_png() 文件“/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/selenium/webdriver/remote/webdriver.py”,第 1042 行,在 get_screenshot_as_png 中 返回base64.b64decode(self.get_screenshot_as_base64().encode('ascii')) 文件“/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/selenium/webdriver/remote/webdriver.py”,第 1052 行,在 get_screenshot_as_base64 中 返回 self.execute(Command.SCREENSHOT)['value']

文件“/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/selenium/webdriver/remote/webdriver.py”,第 312 行,执行中 响应 = self.command_executor.execute(driver_command, params) 文件“/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/selenium/webdriver/remote/remote_connection.py”,第 472 行,执行中 返回 self._request(command_info[0], url, body=data) 文件“/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/selenium/webdriver/remote/remote_connection.py”,第 496 行,在 _request 中 响应 = self._conn.getresponse() 文件“/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/http/client.py”,第 1331 行,在 getresponse 中 响应.begin() 文件“/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/http/client.py”,第 297 行,开始 版本、状态、原因 = self._read_status() 文件“/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/http/client.py”,第 258 行,在 _read_status 中 line = str(self.fp.readline(_MAXLINE + 1), "iso-8859-1") 文件“/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/socket.py”,第 586 行,在 readinto 中 返回 self._sock.recv_into(b)ConnectionResetError:[Errno 54]连接被对等方重置

这是我的代码:

from selenium import webdriver
from selenium.webdriver.firefox.options import Options
from selenium.webdriver.support.ui import WebDriverWait
import os
import time

options = Options()
options.add_argument("--headless")
driver = webdriver.Firefox(firefox_options=options, executable_path =
'/usr/local/bin/geckodriver', log_path=os.devnull)
driver.get('https://google.com/')
time.sleep(5)
driver.save_screenshot('page.png')
driver.quit()

如何等待页面加载而不出现此错误?

我知道你可以等待一个元素加载,我只是想无条件地等待它。

(当然,google.com 上没有更多内容可以加载,我只是制作这个示例来提出复活节问题。)

最佳答案

要在 selenium 中向 driver.get(URL) 添加无条件等待,driver.set_page_load_timeout(n) 其中 n = 时间/秒 > 并循环:

driver.set_page_load_timeout(n)        # Set timeout of n seconds for page load
loading_finished = 0 # Set flag to 0
while loading_finished == 0: # Repeat while flag = 0
try:
sleep(random.uniform(0.1, 0.5)) # wait some time
website = driver.get(URL) # try to load for n seconds
loading_finished = 1 # Set flag to 1 and exit while loop
except:
logger.warn("timeout - retry") # Indicate load fail
else:
driver.save_screenshot('page.png') # In case of flag = 1
driver.close()
driver.quit()

关于Python selenium 等待页面无条件加载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50900061/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com