Headless模式在Selenium 4中使用capabilities时被忽略



我试图在无头模式下运行Selenium,当使用下面的代码时,它工作得很好。

proxy_url = get_random_proxy
proxy = Selenium::WebDriver::Proxy.new http: proxy_url, ssl: proxy_url
caps = Selenium::WebDriver::Options.chrome proxy: proxy
options = Selenium::WebDriver::Chrome::Options.new
# options.add_argument('--no-sandbox')
options.add_argument('--disable-browser-side-navigation')
options.add_argument('--disable-dev-shm-usage')
options.add_argument('--disable-gpu')
options.add_argument('--disable-infobars')
options.add_argument('--disable-translate')
options.add_argument('--dns-prefetch-disable')
options.add_argument('--headless')
options.add_argument('--ignore-certificate-errors')
options.add_argument('--user-agent=Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/102.0.0.0 Safari/537.36')
prefs = { prompt_for_download: false,  default_directory: '/tmp' }
options.add_preference(:download, prefs)
driver = Selenium::WebDriver.for(:chrome, options: options, capabilities: [caps])
# driver = Selenium::WebDriver.for(:chrome, capabilities: [options, caps])
driver.devtools.new
driver.navigate.to "https://api.ipify.org"

但是当用driver = Selenium::WebDriver.for(:chrome, capabilities: [options, caps])替换driver = Selenium::WebDriver.for(:chrome, options: options, capabilities: [caps])时,它仍然打开浏览器窗口。

这是一个弃用警告:

Selenium [DEPRECATION] [:browser_options]:不支持将options作为驱动程序初始化的参数。用途:功能与价值的能力/选项数组如果必要的话我尝试使用后一种选项,因为第一个选项在Selenium 4

中已弃用

你实际上传递了两次选项(1作为选项,1作为能力),所以它变得混乱。但是,您可以将代理传递到Chrome::选项,它应该正常工作:

proxy_url = get_random_proxy
proxy = Selenium::WebDriver::Proxy.new http: proxy_url, ssl: proxy_url
options = Selenium::WebDriver::Options.chrome
options.proxy = proxy
# options.add_argument('--no-sandbox')
options.add_argument('--disable-browser-side-navigation')
options.add_argument('--disable-dev-shm-usage')
options.add_argument('--disable-gpu')
options.add_argument('--disable-infobars')
options.add_argument('--disable-translate')
options.add_argument('--dns-prefetch-disable')
options.add_argument('--headless')
options.add_argument('--ignore-certificate-errors')
options.add_argument('--user-agent=Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/102.0.0.0 Safari/537.36')
prefs = { prompt_for_download: false,  default_directory: '/tmp' }
options.add_preference(:download, prefs)
driver = Selenium::WebDriver.for(:chrome, options: options, capabilities: caps)
# driver = Selenium::WebDriver.for(:chrome, capabilities: [options, caps])
driver.devtools.new
driver.navigate.to "https://api.ipify.org"

最新更新