【问题标题】:Is there a way to use Selenium WebDriver without informing the document that it is controlled by WebDriver?有没有办法使用 Selenium WebDriver 而不通知文档它是由 WebDriver 控制的?
【发布时间】:2019-03-22 13:18:45
【问题描述】:
我正在自动化一个调用 CAPTCHA 来验证登录的网页,但我注意到这个页面只在我使用我的自动化测试代码时才请求这个 CAPTCHA,当我手动执行它时它不会请求。
我要求开发团队在 QA 环境中禁用它,但通过安全代码无法实现。
我需要知道是否有办法不告诉浏览器我正在此页面上使用自动化测试。
你能帮帮我吗?
【问题讨论】:
标签:
java
selenium
selenium-webdriver
webdriver
webdriver-w3c-spec
【解决方案1】:
不,无法隐瞒您正在运行自动化测试。
WebDriver 接口
当使用WebDriver interface 时,webdriver-active 标志 设置为 true,因为用户代理处于远程控制之下。它最初是错误的。
WebIDL
Navigator includes NavigatorAutomationInformation;
请注意,NavigatorAutomationInformation 接口不应暴露在 WorkerNavigator 上。
WebIDL
interface mixin NavigatorAutomationInformation {
readonly attribute boolean webdriver;
};
网络驱动程序
- 如果设置了 webdriver-active 标志,则返回 true,否则返回 false。
例子
上述实现基于一对Security Considerations,如下:
用户代理可以依靠命令行标志或配置选项来测试是否启用 WebDriver,或者让用户代理通过特权内容文档或控制小部件启动或确认连接,以防万一用户代理不直接实现 HTTP 端点。
强烈建议用户代理要求用户采取明确的操作来启用 WebDriver,并且 WebDriver 在用户代理的公开使用版本中保持禁用状态。
还建议用户代理努力在视觉上区分受 WebDriver 控制的用户代理会话与用于正常浏览会话的用户代理会话。这可以通过浏览器 chrome 元素来完成,例如 门衣架、操作系统窗口的彩色装饰或窗口中流行的一些小部件元素,以便于识别自动化窗口。 p>
参考
您可以在以下位置找到一些详细的讨论: