繁体   English   中英

我可以在没有网页检测牵线木偶的情况下使用 geckodriver 运行 Selenium 吗?

[英]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 自动化,这就是我的问题。 我需要没有检测的自动化。

问题:

  1. 我可以在驱动程序运行时打开/关闭 setCapabilites 吗?
  2. 使用 ChromeDriver 是否更容易做到这一点?

FirefoxDriverSelenium一起使用但被检测到现在很常见,因为:

硒标识自己

您可以在如何通过 Python 使用 GeckoDriver 和 Firefox 使 Selenium 脚本无法检测到中找到详细讨论


木偶

根据文档, Marionette是 Mozilla 的 Gecko 引擎的自动化驱动程序。 它可以远程控制 Gecko 平台(如 Mozilla Firefox)的 UI 和内部 JavaScript。 它可以控制镶边(即菜单和功能)或内容(在浏览上下文中加载的网页),从而提供高级别的控制和复制用户操作的能力。 除了在浏览器上执行操作外,Marionette 还可以读取 DOM 的属性和属性。 现在, Selenium/WebDriver共享大部分相同的 API,以及与 Gecko 的 chrome 界面交互的附加命令。 它的目标是复制 Selenium 对 Web 内容所做的事情,即使测试人员能够发送命令来远程控制用户代理

我们还详细讨论了为什么 Firefox 需要 GeckoDriver? 在这个线程内

最后,在讨论webdriver.firefox.marionette 和 webdriver.gecko.driver 之间差异时,我们讨论了使用旧版 Firefox 47.x 浏览器和启用GeckoDriver 的Firefox > 47.x 浏览器初始化Firefox会话。 结论是,当使用 Firefox 浏览器 > v77.x 时,您必须强制使用GeckoDriver ,它广泛使用了牵线木偶 因此,将marionette配置为false对我们没有帮助。 在使用最新版本的,您必须默认使用牵线木偶

如果您仍然想在不使用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://stackoverflow.com");
System.out.println("Application opened");
System.out.println("Page Title is : "+driver.getTitle());
driver.quit();

您可以在以下位置找到一些相关讨论:


其他问题:


奥特罗

在这里您可以找到有关给定 Geckodriver 版本支持哪些 Firefox 浏览器版本的详细讨论

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM