我可以 运行 Selenium 使用 geckodriver 而不检测网页 marionette 吗?
Can I run Selenium using geckodriver without a webpage detecting marionette?
我想将 FirefoxDriver 与 Selenium 一起使用,但我总是被网页检测到。当我添加以下代码时
System.setProperty("webdriver.gecko.driver", "../../../../../../../usr/bin/geckodriver");
FirefoxOptions opt = new FirefoxOptions();
opt.setCapability("marionette", false);
driver = new FirefoxDriver(opt);
网页无法检测到我正在使用 geckodriver,但我无法使用 Selenium 自动化,这是我的问题。我需要没有检测的自动化。
问题:
- 我可以在驱动程序 运行 时更改 setCapabilites on/off 吗?
- 使用 ChromeDriver 是否更容易做到这一点?
将 FirefoxDriver 与 Selenium 一起使用,但现在被检测到很常见,因为:
Selenium identifies itself
您可以在
中找到详细的讨论
Marionette
根据文档,Marionette, is the automation driver for Mozilla’s Gecko engine. It can remotely control the UI and the internal JavaScript of a Gecko platform, such as Mozilla Firefox. It can control both the chrome (i.e. menus and functions) or the content (the webpage loaded inside the browsing context), giving a high level of control and ability to replicate user actions. In addition to performing actions on the browser, Marionette can also read the properties and attributes of the DOM. Now, marionette shares much of the same API as ,使用额外的命令与 Gecko 的 chrome 界面进行交互。它的目标是复制 Selenium 对 Web 内容所做的工作,即 使测试人员能够发送命令以远程控制用户代理。
我们还详细讨论了 为什么 Firefox 需要 GeckoDriver? 在此
最后,在讨论中 we discussed about initializing Firefox sessions using legacy Firefox 47.x browsers and GeckoDriver enabled Firefox >47.x browsers. The conclusion was when using Firefox browsers > v77.x you have to mandatorily use GeckoDriver which extensively uses the marionette. So configuring marionette
as false
won't help us out. While using the latest version of geckodriver, selenium and firefox,你必须默认使用marionette。
如果您仍然想在不使用 marionette 的情况下初始化 Firefox 浏览会话,您需要配置 "marionette"
到false
如下:
System.setProperty("webdriver.gecko.driver", "C://path//to//geckodriver.exe");
DesiredCapabilities dc = new DesiredCapabilities();
dc.setCapability("marionatte", false);
FirefoxOptions opt = new FirefoxOptions();
opt.merge(dc);
FirefoxDriver driver = new FirefoxDriver(opt);
driver.get("https://whosebug.com");
System.out.println("Application opened");
System.out.println("Page Title is : "+driver.getTitle());
driver.quit();
您可以在以下位置找到一些相关讨论:
其他问题:
我可以在驱动程序 运行 时更改 setCapabilites on/off 吗?:简短的回答是 否,当网络驱动程序发起的会话为In Progress
时,您无法更改功能,您可以在以下位置找到一些详细的讨论:
- Change ChromeOptions in an existing webdriver
- Set capability on already running selenium webdriver
使用 ChromeDriver 更容易做到这一点吗?:同样,准确的答案是 否,ChromeDriver 也被检测到,您可以在以下位置找到一些详细的讨论:
结尾
在这里你可以找到关于Which Firefox browser versions supported for given Geckodriver version?
的详细讨论
我想将 FirefoxDriver 与 Selenium 一起使用,但我总是被网页检测到。当我添加以下代码时
System.setProperty("webdriver.gecko.driver", "../../../../../../../usr/bin/geckodriver");
FirefoxOptions opt = new FirefoxOptions();
opt.setCapability("marionette", false);
driver = new FirefoxDriver(opt);
网页无法检测到我正在使用 geckodriver,但我无法使用 Selenium 自动化,这是我的问题。我需要没有检测的自动化。
问题:
- 我可以在驱动程序 运行 时更改 setCapabilites on/off 吗?
- 使用 ChromeDriver 是否更容易做到这一点?
将 FirefoxDriver 与 Selenium 一起使用,但现在被检测到很常见,因为:
Selenium identifies itself
您可以在
Marionette
根据文档,Marionette, is the automation driver for Mozilla’s Gecko engine. It can remotely control the UI and the internal JavaScript of a Gecko platform, such as Mozilla Firefox. It can control both the chrome (i.e. menus and functions) or the content (the webpage loaded inside the browsing context), giving a high level of control and ability to replicate user actions. In addition to performing actions on the browser, Marionette can also read the properties and attributes of the DOM. Now, marionette shares much of the same API as
我们还详细讨论了 为什么 Firefox 需要 GeckoDriver? 在此
最后,在讨论中marionette
as false
won't help us out. While using the latest version of geckodriver, selenium and firefox,你必须默认使用marionette。
如果您仍然想在不使用 marionette 的情况下初始化 Firefox 浏览会话,您需要配置 "marionette"
到false
如下:
System.setProperty("webdriver.gecko.driver", "C://path//to//geckodriver.exe");
DesiredCapabilities dc = new DesiredCapabilities();
dc.setCapability("marionatte", false);
FirefoxOptions opt = new FirefoxOptions();
opt.merge(dc);
FirefoxDriver driver = new FirefoxDriver(opt);
driver.get("https://whosebug.com");
System.out.println("Application opened");
System.out.println("Page Title is : "+driver.getTitle());
driver.quit();
您可以在以下位置找到一些相关讨论:
其他问题:
我可以在驱动程序 运行 时更改 setCapabilites on/off 吗?:简短的回答是 否,当网络驱动程序发起的会话为
In Progress
时,您无法更改功能,您可以在以下位置找到一些详细的讨论:- Change ChromeOptions in an existing webdriver
- Set capability on already running selenium webdriver
使用 ChromeDriver 更容易做到这一点吗?:同样,准确的答案是 否,ChromeDriver 也被检测到,您可以在以下位置找到一些详细的讨论:
结尾
在这里你可以找到关于Which Firefox browser versions supported for given Geckodriver version?
的详细讨论