检测InternetExplorerDriver是否正在从客户端JavaScript控制浏览器

时间:2018-12-21 15:17:58

标签: selenium-webdriver selenium-chromedriver

InternetExplorerDriver是否在受远程控制的浏览器的javascript环境中创建了一个讲故事或标记或变量,该变量可用于在网页中创建javascript代码以检测浏览器是否(显然是MSIE)并且是由Selenium WebDriver通过InternetExplorerDriver控制的吗?

2 个答案:

答案 0 :(得分:1)

根据W3C WebDriver Specification,驱动程序应该在navigator对象上设置属性,特别是navigator.webdriver,该属性将允许检测。不幸的是,这是IE驱动程序目前不符合规范的少数几个地方之一。

了解驱动程序的内部结构后,您可以寻找document.__webdriver_script_fn,它是驱动程序用来执行JavaScript的变量。请注意,此JavaScript执行变量由驱动程序的多个内部函数使用,而不仅仅是对Selenium executeScript方法的显式调用。但是请注意,这是一个实现细节,并且可能会更改,恕不另行通知。实际上,开发团队正在研究4.x开发周期的重新架构选择,而这种选择将完全消失。

如果您对为什么要检测这样的事情更加明确,则可能会提供更具体且具有前瞻性的指导。但是,在撰写本文时,这可能是您将能够做到的最好的方法。

答案 1 :(得分:0)

可以通过检查window.navigator对象上的特定属性在前端检测到Internet Explorer。

正如您提到的要向网页添加一些代码一样,您也可以-假设前端代码使用某种捆绑程序-使用NPM中的“浏览器检测”程序包之一。

我个人更喜欢并建议使用以下一种-浏览器https://www.npmjs.com/package/bowser

如果要检测IE实例是否受Selenium控制,则可以检查Selenium在浏览器中公开的特定变量。

我不确定那种情况下的IE,但是肯定有类似的方法。答案可以在这里找到: Can a website detect when you are using selenium with chromedriver?

请注意,使用InternetExplorerDriver等同于使用Selenium,因为那是唯一的IE驱动程序,所以我认为检测Selenium上下文应该就足够了。