Java 在Selenium WebDriver中实现InternetExplorerDriver期间,不会发生NoTouchElementException

Java 在Selenium WebDriver中实现InternetExplorerDriver期间,不会发生NoTouchElementException,java,internet-explorer,selenium-webdriver,Java,Internet Explorer,Selenium Webdriver,目前,我正在开发WebDriver来调用IE浏览器来运行测试。但是当我尝试运行下面的简单示例时,我收到了一个NoTouchElementException 然而,如果我使用Chrome驱动程序或Firefox驱动程序,代码运行良好。 任何想法或想法都将不胜感激 Jar:selenium-server-standalone-2.5.0.Jar 代码: 错误消息: Exception in thread "main" org.openqa.selenium.NoSuchElementExceptio

目前,我正在开发WebDriver来调用IE浏览器来运行测试。但是当我尝试运行下面的简单示例时,我收到了一个
NoTouchElementException

然而,如果我使用Chrome驱动程序或Firefox驱动程序,代码运行良好。 任何想法或想法都将不胜感激

Jar:
selenium-server-standalone-2.5.0.Jar

代码:

错误消息:

Exception in thread "main" org.openqa.selenium.NoSuchElementException: Unable to find element with name == q (WARNING: The server did not provide any stacktrace information)
For documentation on this error, please visit: http://seleniumhq.org/exceptions/no_such_element.html
Build info: version: '2.5.0', revision: '13516', time: '2011-08-23 18:29:57'
System info: os.name: 'Windows 7', os.arch: 'x86', os.version: '6.1', java.version: '1.6.0_25'
Driver info: driver.version: RemoteWebDriver
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
    at java.lang.reflect.Constructor.newInstance(Unknown Source)
    at org.openqa.selenium.remote.ErrorHandler.createThrowable(ErrorHandler.java:131)
    at org.openqa.selenium.remote.ErrorHandler.throwIfResponseFailed(ErrorHandler.java:105)
    at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:409)
    at org.openqa.selenium.remote.RemoteWebDriver.findElement(RemoteWebDriver.java:197)
    at org.openqa.selenium.remote.RemoteWebDriver.findElementByName(RemoteWebDriver.java:246)
    at org.openqa.selenium.By$ByName.findElement(By.java:298)
    at org.openqa.selenium.remote.RemoteWebDriver.findElement(RemoteWebDriver.java:189)
    at lib.WebDriver2.main(WebDriver2.java:14)

尝试添加隐式等待,如下所示。正如Robert所说,您的URL应该具有http://

WebDriver driver = new InternetExplorerDriver(ieCapabilities);
driver.manage().timeouts().implicitlyWait(90, TimeUnit.SECONDS);

您明确避免了必须设置IE的受保护模式设置。
InternetExplorerDriver就是这样做的。通过忽略安全域来引入FLAKINESS。当您删除此功能设置并设置中记录的受保护模式设置时,问题似乎自行解决了。

项目网站上有一个短消息(复制于Selenium 2.9):

InternetExplorerDriver要求设置所有安全域 如果您不在 若要修改安全域,则可以覆盖 检查如下:

DesiredCapabilities capabilities =
DesiredCapabilities.internetExplorer();
capabilities.set(InternetExplorerDriver.INTRODUCE_FLAKINESS_BY_IGNORING_SECURITY_DOMAINS,
true); 
WebDriver driver = new InternetExplorerDriver(capabilities);
从常数的名称可以看出,这可能会引入片状 在你的测试中。如果所有站点都在同一个保护域中,则 应该没问题

并行C#InvalidOperationException消息:

启动Internet Explorer时发生意外错误。保护模式必须为 为所有分区设置相同的值(启用或禁用)。 (司机)

和C#而不是调整IE设置(截至2016年2月的最佳猜测):


这是Selenium issue tracker上的所有内容。

stacktrace/错误消息看起来不完整,您确定它完整吗?您好,更新了错误消息:)IE浏览器已打开并定向到google页面。但是,它失败了,因为它试图在这里找到元素“q”同样的问题。我使用的是64位系统,但是有32位jvm,所以驱动程序也是32位的。下面列出的任何内容都没有帮助您明确避免设置IE的保护模式设置。这就是
InternetExplorerDriver所做的。通过忽略\u安全\u域
功能设置来引入\u flakines\u。如果您删除此功能设置并按照?Hi JimEvans,非常感谢您的帮助!!我删除了“ieCapabilities”。相反,我选择了Internet选项,并按照Project Wiki的步骤进行操作。它现在对我有效。最重要的信息是“您必须将每个区域的保护模式设置设置为相同的值”。再次感谢您的帮助。嗨,Nilesh,非常感谢您的帮助。但是,这个解决方案对我不起作用。这是因为你应该使用FluentWait来代替.ignering子句来从异常中恢复。嗨,Jim。谢谢你的解决方案。我没有任何权限修改安全设置。有解决办法吗?谢谢该功能是解决方案。描述受保护模式设置之所以重要的技术原因,以及为什么您的组织在不允许您更改设置的情况下积极破坏您完成工作的能力。对于C#版本,我无法在InternetExplorerDriver构造函数中传递所需的功能
DesiredCapabilities capabilities =
DesiredCapabilities.internetExplorer();
capabilities.set(InternetExplorerDriver.INTRODUCE_FLAKINESS_BY_IGNORING_SECURITY_DOMAINS,
true); 
WebDriver driver = new InternetExplorerDriver(capabilities);
var ieOptions = new OpenQA.Selenium.IE.InternetExplorerOptions {
                IntroduceInstabilityByIgnoringProtectedModeSettings = true };
using (var driver = new InternetExplorerDriver(ieOptions))
{