有没有办法在不通知文档它由 WebDriver 控制的情况下使用 Selenium WebDriver?

Is there a way to use Selenium WebDriver without informing the document that it is controlled by WebDriver?

我正在自动化调用 CAPTCHA 来验证登录的网页,但我注意到此页面仅在我使用我的自动化测试代码时请求此 CAPTCHA,而当我手动执行时它不会要求。 我要求开发团队在 QA 环境中禁用它,但是安全代码不可能。

我想知道是否有办法不告诉浏览器我正在该页面上使用自动化测试。

你能帮帮我吗?

没有,没办法隐瞒你在运行自动化测试

WebDriver 接口

当使用 WebDriver interface 时,webdriver-active 标志 设置为 true,因为用户代理处于远程控制之下。它最初是错误的。

WebIDL

Navigator includes NavigatorAutomationInformation;

请注意,NavigatorAutomationInformation 接口不应暴露在 WorkerNavigator 上。

WebIDL

interface mixin NavigatorAutomationInformation {
    readonly attribute boolean webdriver;
};

webdriver

  • Returns 如果设置了 webdriver-active 标志则为真,否则为假。

例子

  • 网络作者:

    navigator.webdriver
    
    Defines a standard way for co-operating user agents to inform the document that it is controlled by WebDriver, for example so that alternate code paths can be triggered during automation.
    

上面提到的实现是基于一对 Security Considerations 如下:

  • 用户代理可以依赖命令行标志或配置选项来测试是否启用 WebDriver,或者让用户代理通过特权内容文档或控件发起或确认连接小部件,以防用户代理不直接实现 HTTP 端点。

  • 强烈建议用户代理要求用户采取明确的操作来启用 WebDriver,并且 WebDriver 在公开使用的用户代理版本中保持禁用状态。

  • 还建议用户代理努力在视觉上区分受 WebDriver 控制的用户代理会话与用于正常浏览会话的用户代理会话。这可以通过浏览器 chrome 元素(例如 门衣架 、OS window 的彩色装饰或一些小部件元素来完成流行于window 以便于识别自动化 windows.


参考

您可以在以下位置找到一些详细的讨论:

  • Akamai Bot Manager detects WebDriver driven Chrome Browsing Context