我正在自动化一个调用验证码来验证登录的网页,但我注意到这个页面只在我使用自动化测试代码时才请求这个验证码,当我手动执行此操作时,它不会请求。 我要求开发团队在 QA 环境中禁用它,但安全代码无法做到这一点。
我需要知道是否有办法不向浏览器说我正在此页面上使用自动测试。
你能帮帮我吗?
不,没有办法隐藏您正在运行自动测试。
网页驱动程序接口
使用WebDriver 接口时,Web 驱动程序活动标志设置为 true,因为用户代理处于远程控制之下。它最初是错误的。
网站定位
Navigator includes NavigatorAutomationInformation;
请注意,NavigatorAutomationInformation
接口不应在 WorkerNavigator 上公开。
网站定位
interface mixin NavigatorAutomationInformation {
readonly attribute boolean webdriver;
};
网络驱动程序
- 如果设置了 Web 驱动程序活动标志,则返回 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 浏览上下文
- Selenium Webdriver:修改navigator.webdriver标志以防止硒检测
- Akamai Bot Manager 检测 WebDriver 驱动的 Chrome 浏览上下文