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

时间:2018-10-17 19:10:52

标签: java selenium selenium-webdriver webdriver webdriver-w3c-spec

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

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

可以帮我吗?

1 个答案:

答案 0 :(得分:1)

,无法隐瞒您正在运行自动测试。

WebDriver界面

使用WebDriver interface时,由于用户代理受远程控制, webdriver-active标志设置为true。最初是错误的。

WebIDL

Navigator includes NavigatorAutomationInformation;

请注意,NavigatorAutomationInformation界面不应在WorkerNavigator上公开。

WebIDL

interface mixin NavigatorAutomationInformation {
    readonly attribute boolean webdriver;
};

webdriver

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

示例

  • 对于网络作者(非规范):

    • navigator.webdriver

      定义了一种标准的方式,用于与用户代理进行协作以通知文档它由WebDriver控制,例如,以便可以在自动化过程中触发备用代码路径。

上述实现基于以下几个Security Considerations

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

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

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