如何检测Chrome浏览器中的硒是否无头?

时间:2018-07-13 14:21:40

标签: python google-chrome selenium selenium-webdriver selenium-chromedriver

我正在编写一个硒测试,考虑到chrome浏览器是否无头启动,它的行为会有所不同。我的问题是在测试中,如何检测浏览器是否满足条件流?

3 个答案:

答案 0 :(得分:2)

答案 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": ""
       }
    }