在 Selenium WebDriver 中实现 InternetExplorerDriver 期间发生 NoSuchElementException
目前,我正在使用 WebDriver 来调用 IE 浏览器来运行测试。但是当我尝试运行下面的简单示例时,我收到了 NoSuchElementException
。
然而,如果我使用 Chrome 驱动程序或 Firefox 驱动程序,代码就可以正常工作。 任何想法或想法将不胜感激。
Jar: selenium-server-standalone-2.5.0.jar
代码:
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.ie.InternetExplorerDriver;
import org.openqa.selenium.remote.DesiredCapabilities;
public static void main(String[] args) throws InterruptedException {
DesiredCapabilities ieCapabilities = DesiredCapabilities.internetExplorer();
ieCapabilities.setCapability(InternetExplorerDriver.INTRODUCE_FLAKINESS_BY_IGNORING_SECURITY_DOMAINS, true);
WebDriver driver = new InternetExplorerDriver(ieCapabilities);
driver.get("www.google.com");
driver.findElement(By.name("q"));
}
错误消息:
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)
Currently, I am working on WebDriver to invoke IE browser to run the testing. But I received a NoSuchElementException
when I tried to run the simple example below.
However, the code just worked fine if I used Chrome Driver or Firefox driver.
Any idea or thought would be appreciated.
Jar: selenium-server-standalone-2.5.0.jar
Code:
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.ie.InternetExplorerDriver;
import org.openqa.selenium.remote.DesiredCapabilities;
public static void main(String[] args) throws InterruptedException {
DesiredCapabilities ieCapabilities = DesiredCapabilities.internetExplorer();
ieCapabilities.setCapability(InternetExplorerDriver.INTRODUCE_FLAKINESS_BY_IGNORING_SECURITY_DOMAINS, true);
WebDriver driver = new InternetExplorerDriver(ieCapabilities);
driver.get("www.google.com");
driver.findElement(By.name("q"));
}
Error message:
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)
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
您已明确避免设置 IE 的保护模式设置。这就是
InternetExplorerDriver.INTRODUCE_FLAKINESS_BY_IGNORING_SECURITY_DOMAINS
功能设置的作用。当您删除此功能设置并按照项目 wiki,看来问题自行解决了。You've explicitly avoided having to set the Protected Mode settings of IE. That's what the
InternetExplorerDriver.INTRODUCE_FLAKINESS_BY_IGNORING_SECURITY_DOMAINS
capability setting does. When you remove this capability setting and set the Protected Mode settings as documented in the project wiki, it seems the problem resolves itself.尝试像下面这样隐式添加等待。正如 Robert 所说,你的 URL 应该包含 http://
Try adding implicitly wait like below. Also as Robert said, your URL should have http://
有一个简短的 常见问题解答条目 (大约 Selenium 2.9 复制):
并行 C# InvalidOperationException 消息:
和 C# 而不是调整 IE 设置(截至 2016 年 2 月的最佳猜测):
这都是 问题 1795追踪器。
There was a short FAQ entry on the project website (copied circa Selenium 2.9):
The parallel C# InvalidOperationException message:
and the C# instead of adjusting IE settings (best guess as of Feb 2016):
This was all part of issue 1795 on the Selenium issue tracker.