我一直在使用Selenium和Python(以及Chrome和chromedriver)来成功地自动化与网站的交互,但是最近我的脚本停止了工作。
我将其范围缩小到了脚本可以到达的那一行,但随后没有进一步的内容,然后再没有其他任何事情发生。无论等待多长时间,都不会出错。脚本就挂在那里。
行是这样的:
start_text_area = driver.find_element_by_id('startDate')
经过一些搜索,我认为如果尝试使用超时可能会有所帮助,所以我尝试了以下代码:
try:
element = WebDriverWait(driver, 10).until(
EC.presence_of_element_located((By.ID, "startDate"))
)
finally:
driver.quit()
但是结果是一样的:虽然我等了一段时间,但什么都没发生。
正如我所说,这一直持续到最近。我不知道我使用的网站是否更改过。
我还应该提到,当我启动网站时,我还会看到一个终端窗口,并且看到其中出现了chromedriver错误消息。该错误消息是这样的:
[1022/123519.xxx:ERROR:inspector_emulator_agent.cc(477)] Can only enable virtual time for pages, not workers
有什么想法会导致这种情况,或者我能对此做些什么?
答案 0 :(得分:0)
此错误消息...
[1022/123519.xxx:ERROR:inspector_emulator_agent.cc(477)] Can only enable virtual time for pages, not workers
...是 Chrome驱动程序和 Chrome / Chromium 使用的Response
中的InspectorEmulationAgent::AssertPage()
。 / p>
该功能在inspector_emulation_agent.cc中定义为:
Response InspectorEmulationAgent::AssertPage() {
if (!web_local_frame_) {
LOG(ERROR) << "Can only enable virtual time for pages, not workers";
return Response::InvalidParams(
"Can only enable virtual time for pages, not workers");
}
return Response::OK();
当您通过--no-sandbox
的实例使用参数 ChromeOptions()
时,将观察到此错误:
options = webdriver.ChromeOptions()
options.add_argument('--no-sandbox')
--no-sandbox
将解决问题。如果您使用的是 Windows操作系统,则需要添加参数 --disable-gpu
,如下所示:
options = webdriver.ChromeOptions()
options.add_argument('--disable-gpu')