1

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

我需要知道是否有办法不对浏览器说我正在此页面上使用自动化测试。

你能帮我吗?

4

1 回答 1

2

,没有办法隐瞒您正在运行自动化测试。

WebDriver接口

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

WebIDL

Navigator includes NavigatorAutomationInformation;

请注意,NavigatorAutomationInformation不应在 WorkerNavigator 上公开该接口。

WebIDL

interface mixin NavigatorAutomationInformation {
    readonly attribute boolean webdriver;
};

网络驱动程序

  • 如果设置了 webdriver-active 标志,则返回 true,否则返回 false。

例子

  • 对于网络作者:

    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.
    

上述实现基于以下几个安全注意事项

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

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

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


参考

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

于 2018-10-19T22:12:17.857 回答