有没有办法检测I';我在JavaScript的SeleniumWebDriver页面中
我希望在我的测试中禁止初始化,如果JavaScript能够检测到我正在Selenium自动化页面中运行,那么可以轻松地完成这项工作 那么,是否有一些JavaScript代码可以用来检测Selenium驱动程序?或者,如何扩展userAgent字符串以包含可以从JavaScript检测到的模式有没有办法检测I';我在JavaScript的SeleniumWebDriver页面中,javascript,selenium,cucumber,webdriver,capybara,Javascript,Selenium,Cucumber,Webdriver,Capybara,我希望在我的测试中禁止初始化,如果JavaScript能够检测到我正在Selenium自动化页面中运行,那么可以轻松地完成这项工作 那么,是否有一些JavaScript代码可以用来检测Selenium驱动程序?或者,如何扩展userAgent字符串以包含可以从JavaScript检测到的模式 如果这真的很重要,我会在Mac OS X上运行它。因为问题提到了水豚,下面是Ruby中的等效代码: profile = Selenium::WebDriver::Firefox::Profile.new p
如果这真的很重要,我会在Mac OS X上运行它。因为问题提到了水豚,下面是Ruby中的等效代码:
profile = Selenium::WebDriver::Firefox::Profile.new
profile['general.useragent.override'] = "my ua string"
driver = Selenium::WebDriver.for :firefox, :profile => profile
以下是如何使用水豚和Chromedriver:
Capybara.register_driver :selenium do |app|
Capybara::Selenium::Driver.new(app, browser: :chrome,
args: ['--user-agent="Chrome under Selenium for Capybara"'] )
end
据我所知,Selenium没有提供跨浏览器方法来检测它是否在驱动浏览器。在Firefox中,webdriver在
html
元素上设置webdriver
属性,但在其他浏览器中显然没有设置。也许有一天,这将是检测浏览器是否由Selenium驱动的一种方法,但目前还不是这样。我刚刚用Firefox和Chrome对其进行了测试:该属性在Firefox中存在,但在Chrome中不存在。那就是
用于任何浏览器、任何操作系统、任何测试运行程序的方法
有时候我需要做一些事情,比如你想要达到的目标。我使用Selenium运行大型测试套件。这些套件在多个版本的Chrome、Firefox和Internet Explorer上运行,在Linux、Windows和OS X上运行,其中一些测试在Sauce实验室上远程运行
我所使用的方法依赖于。(我正在链接到Java文档,但此方法适用于Selenium可用于的所有平台。)在运行测试之前,我使用它在浏览器端运行代码。我使用此方法的两种方式:
窗口
上设置一个可变浏览器侧。例如,我可以设置window.running\u test\u suite\u for\u foobar=true
,然后让代码检查它。存在冲突的风险,但如果小心使用变量名,风险最小
onbeforeunload
模块,它可以防止用户离开带有未保存修改的页面。在测试中,通常打开该选项是没有用的
getBoundingClientRect
中遇到了一个问题,在Internet Explorer中坐标通常是不正确的,但只有一个版本的Chrome。在运行时检查错误的成本太高,我无法确定字体或显示设置的更改是否不会产生误判。)
是的,如果有人正在使用Firefox驱动程序进行Selenium自动化,您可以这样做,为了检测Selenium驱动程序,您必须在客户端输入以下代码:
$(document).ready(function() {
try{
if(window.document.documentElement.getAttribute("webdriver"))
alert("Caught in the first case: Selenium Webdriver is banned!!!");
}
catch(Exception)
{
}
try{
if(navigator.webdriver)
alert("Caught in the second case: Selenium Webdriver is banned!!!");
}
catch(Exception)
{
}
});
对于特定于Chrome和Internet Explorer的浏览器,Selenium浏览器不起作用。您可以尝试禁用
navigator.webdriver
变量,但请注意,它不再来自ChromeDriver 79.0.3945.16及以上版本。我很清楚,您使用的是Selenium RC(Selenium 1.x)还是webdriver(Selenium 2.x)?这是selenium-Webdriver-0.0.28 gem中的Webdriver。谢谢,这非常适合Capybara场景。我们如何隐藏navigator.Webdriver变量?