我正在编写一个Selify测试,它有不同的行为,不管Chrome浏览器是不是以无头启动的。我的问题是在我的测试中,我如何检测浏览器对于我的条件流是否是无头的?
baubqpgj1#
Https://antoinevastel.com/bot%20detection/2018/01/17/detect-chrome-headless-v2.html#:~:text=In%20order%20to%20automate%20Chrome,可能%20to%20Detect%20Chrome%20Headless。
driver.execute_script("return navigator.plugins.length == 0")
bnl4lu3b2#
我只是找到了这条路。它是一个列表,所以您必须在其中找到“--headless”元素。
opc = Options() opc.add_argument('headless')
在本例中,元素在列表中的位置是[0],因此您只需如下所示:
if (opc.arguments[0]=="--headless"): print("Do something")
vsnjm48y3#
我知道这个问题是关于Chrome的,但如果你用的是Firefox,有一个更干净的解决方案(在Firefox 106上测试):
if driver.caps.get("moz:headless", False): print("Firefox is headless")
v09wglhw4#
在无头启动Chrome示例时,需要显式地将参数“--Headless”添加到chromeOptions对象中。例如,如果您正在为网站编写测试框架,您可能有某种类型的浏览器创建器类,它能够为您提供不同的浏览器可用。为什么不将该参数保存为该类的附加成员?如果您的代码中没有这种工厂设计,另一个更简单的选择是
options = webdriver.ChromeOptions options.add_argument("--headless") print(options.arguments)
4条答案
按热度按时间baubqpgj1#
Https://antoinevastel.com/bot%20detection/2018/01/17/detect-chrome-headless-v2.html#:~:text=In%20order%20to%20automate%20Chrome,可能%20to%20Detect%20Chrome%20Headless。
bnl4lu3b2#
我只是找到了这条路。
它是一个列表,所以您必须在其中找到“--headless”元素。
在本例中,元素在列表中的位置是[0],因此您只需如下所示:
vsnjm48y3#
我知道这个问题是关于Chrome的,但如果你用的是Firefox,有一个更干净的解决方案(在Firefox 106上测试):
v09wglhw4#
在无头启动Chrome示例时,需要显式地将参数“--Headless”添加到chromeOptions对象中。例如,如果您正在为网站编写测试框架,您可能有某种类型的浏览器创建器类,它能够为您提供不同的浏览器可用。为什么不将该参数保存为该类的附加成员?
如果您的代码中没有这种工厂设计,另一个更简单的选择是