如何检测Chrome浏览器是否含 selenium 无头?

nwsw7zdq  于 2022-11-10  发布在  其他
关注(0)|答案(4)|浏览(276)

我正在编写一个Selify测试,它有不同的行为,不管Chrome浏览器是不是以无头启动的。我的问题是在我的测试中,我如何检测浏览器对于我的条件流是否是无头的?

baubqpgj

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")
bnl4lu3b

bnl4lu3b2#

我只是找到了这条路。
它是一个列表,所以您必须在其中找到“--headless”元素。

opc = Options()
opc.add_argument('headless')

在本例中,元素在列表中的位置是[0],因此您只需如下所示:

if (opc.arguments[0]=="--headless"):
    print("Do something")
vsnjm48y

vsnjm48y3#

我知道这个问题是关于Chrome的,但如果你用的是Firefox,有一个更干净的解决方案(在Firefox 106上测试):

if driver.caps.get("moz:headless", False):
     print("Firefox is headless")
v09wglhw

v09wglhw4#

在无头启动Chrome示例时,需要显式地将参数“--Headless”添加到chromeOptions对象中。例如,如果您正在为网站编写测试框架,您可能有某种类型的浏览器创建器类,它能够为您提供不同的浏览器可用。为什么不将该参数保存为该类的附加成员?
如果您的代码中没有这种工厂设计,另一个更简单的选择是

options = webdriver.ChromeOptions
options.add_argument("--headless")
print(options.arguments)

相关问题