一尘不染

有没有一种方法可以使用Selenium WebDriver而不通知文档它由WebDriver控制?

selenium

我正在自动执行一个调用CAPTCHA来验证登录名的网页,但是我注意到该页面仅在使用自动化测试代码时才请求此CAPTCHA,而当我手动执行时则不请求。我要求开发人员团队在质量检查环境中禁用它,但是通过安全代码是不可能的。

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

你能帮我吗?


阅读 299

收藏
2020-06-26

共1个答案

一尘不染

,没有任何方法可以隐瞒您正在运行自动化测试。

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元素来完成,例如 门衣架 ,操作系统窗口的彩色装饰或窗口中普遍存在的一些小部件元素,以便轻松识别自动化窗口。


2020-06-26