问题
I'm trying to scrape some stuff using Selenium/headless chrome. In some pages, the driver will not move to the next step until the full page is loaded (even though the relevant elements are present).
I tried setting the pageLoadStrategy capability like so:
caps = Selenium::WebDriver::Remote::Capabilities.chrome("chromeOptions" => {"args" => [ "--headless" ]})
caps['pageLoadStrategy']='eager'
self.driver||=Selenium::WebDriver.for :chrome, :desired_capabilities => caps
I get the following error:
Selenium::WebDriver::Error::UnknownError: unknown error: cannot parse capability: pageLoadStrategy
from unknown error: page load strategy unsupported
Is there a way to make this work with chrome?
According to this post, pageLoadStrategy is supported, but I can't get the 'eager' option to work.
Page load strategy for Chrome driver
If not, are there more tried and true ways of doing this. I've been having a lot of trouble with Chrome (it also doesn't support unexpectedAlertBehaviour)
回答1:
Chrome does not support PageLoadStrategy.EAGER. But you can try PageLoadStrategy.NONE. Sometimes you need to synchronize driver wait for some elemnts but possibility is less.
回答2:
ChromeDriver 77.0 (which supports Chrome version 77) now supports eager as pageLoadStrategy.
Resolved issue 1902: Support eager page load strategy [Pri-2]
See release notes
回答3:
For those who are waiting for the "eager" feature. You can check the "CheckSupport" function in the source code.
It seems it is still not supported even for now.
回答4:
https://cs.chromium.org/chromium/src/chrome/test/chromedriver/chrome/page_load_strategy.cc?q=page_load_strategy&sq=package:chromium&dr=C
The corresponding page load strategy for EAGER is not yet supported by chrome.
回答5:
The eager strategy now seems to be supported by chrome since v66 (source).
来源:https://stackoverflow.com/questions/47877899/does-chrome-chrome-driver-support-pageloadstrategy-eager-for-selenium