我想让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 / we bdriver.py“,第1033行,在save_screenshot中返回self.get_screenshot_as_file(filename)文件”/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site -packages / selenium / webdriver / remote / we bdriver.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 / we bdriver.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 / we bdriver.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/we bdriver.py”,第312行,执行response = self.command_executor.execute( driver_command,params)文件“/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/selenium/webdriver/remote/re mote_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/re mote_connection.py”,line 496,在_request resp = self._conn.getresponse()文件“/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/http/client.py”,第1331行,在getresponse response.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_sta中tus 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上没有更多内容可以加载我只是用这个例子来制作复活节的问题 . )
1 回答
在selenium中添加无条件等待
driver.get(URL)
,用n = time/seconds
和循环添加driver.set_page_load_timeout(n)
: