我正在编写一个硒测试,考虑到chrome浏览器是否无头启动,它的行为会有所不同。我的问题是在测试中,如何检测浏览器是否满足条件流?
答案 0 :(得分:2)
driver.execute_script("return navigator.plugins.length == 0")
答案 1 :(得分:-1)
无头启动chrome实例时,需要在chromeOptions对象中显式添加参数“ --headless”。 例如,如果您正在编写网站的测试框架,则可能具有某种浏览器创建者类,该类可以为您提供不同的浏览器。为什么不将该参数另存为该类的其他成员?
如果您的代码中没有这种工厂设计,另一个简单的选择就是
options = webdriver.ChromeOptions
options.add_argument("--headless")
print(options.arguments)
答案 2 :(得分:-1)
根据您的问题如何检测Chrome浏览器是否无头将取决于您配置 ChromeDriver 的方式。从当前的实现开始,您必须使用以下两种方法之一以 headless 模式调用 ChromeDriver 和 ChromeBrowser :
现在可以验证是否headless
调用了 Chrome浏览器,您可以使用service_args
参数来创建日志文件,如下所示:
代码块:
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
options = Options()
options.add_argument("--headless")
options.add_argument("start-maximized")
options.add_argument("disable-infobars")
options.add_argument("--disable-extensions")
driver = webdriver.Chrome(chrome_options=options, executable_path=r'C:\Utility\BrowserDrivers\chromedriver.exe', service_args=["--log-path=./Logs/DubiousDan.log"])
driver.get("http://google.com/")
print ("Headless Chrome Initialized")
driver.quit()
在观察日志文件 DubiousDan.log 中的日志消息时,您会在其中找到 headless 参数InitSession
会确认 Chrome浏览器是在 headless 模式下调用的:
日志消息:
[1531492796.561][INFO]: COMMAND InitSession {
"capabilities": {
"alwaysMatch": {
"browserName": "chrome",
"goog:chromeOptions": {
"args": [ "disable-infobars", "--disable-extensions", "--headless", "--no-sandbox", "--disable-gpu", "start-maximized" ],
"extensions": [ ]
},
"platformName": "any"
},
"firstMatch": [ {
} ]
},
"desiredCapabilities": {
"browserName": "chrome",
"goog:chromeOptions": {
"args": [ "disable-infobars", "--disable-extensions", "--headless", "--no-sandbox", "--disable-gpu", "start-maximized" ],
"extensions": [ ]
},
"platform": "ANY",
"version": ""
}
}