簡體   English   中英

在Selenium WebDriver中實現InternetExplorerDriver期間發生NoSuchElementException

[英]NoSuchElementException is occurred during implementation of InternetExplorerDriver in Selenium WebDriver

目前,我正在研究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)

您已明確避免必須設置IE的保護模式設置。 這就是InternetExplorerDriver.INTRODUCE_FLAKINESS_BY_IGNORING_SECURITY_DOMAINS功能設置的功能。 當您刪除此功能設置並設置項目維基中記錄的保護模式設置時,問題似乎自行解決。

嘗試添加隱式等待如下。 羅伯特說,你的網址應該有http://

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

項目網站上有一個簡短的FAQ條目 (大約復制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時出現意外錯誤。 必須將保護模式設置為所有區域的相同值(啟用或禁用)。 (NoSuchDriver)

和C#而不是調整IE設置(截至2016年2月的最佳猜測):

var ieOptions = new OpenQA.Selenium.IE.InternetExplorerOptions {
                IntroduceInstabilityByIgnoringProtectedModeSettings = true };
using (var driver = new InternetExplorerDriver(ieOptions))
{

這是Selenium問題跟蹤器上1795問題的一部分。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM