NoSuchElementException:无法在FireFox和Chrome中找到具有id / Works的元素,但在IE中却找不到

时间:2015-09-18 11:45:48

标签: java eclipse internet-explorer selenium selenium-webdriver

我在Eclipse中使用以下代码,代码在FireFox和Chrome中运行良好(显然我不会在那些测试用例中调用IE webdriver)但在IE10中没有调用,但代码在assertTrue上失败部分。因此,下面的代码打开IE浏览器窗口,打开请求的URL,填写用户名和密码,然后单击确定按钮。登录成功,我想确认我以我用过的用户名和密码登录。

public void test3() throws Exception {
System.setProperty("webdriver.ie.driver", "browsers\\IEDriverServer.exe");

/** Test: Start Browser*/
driver=new InternetExplorerDriver();
driver.manage().window().maximize();

/** Test: Login is possible*/
driver.get ("http://URL/");
driver.findElement(By.id("Username")).clear();
driver.findElement(By.id("Username")).sendKeys("testname");
driver.findElement(By.id("Password")).clear();
driver.findElement(By.id("Password")).sendKeys("Welcome01");
driver.findElement(By.xpath("//input[@id='']")).click();

/** Test: logged in as user confirmation*/
assertTrue(driver.findElement(By.id("dvPageOptions")).getText().contains("testname"));

driver.quit();

这会引发错误:

  

org.openqa.selenium.NoSuchElementException:无法找到元素   id == dvPageOptions(警告:服务器没有提供任何内容   stacktrace information)命令持续时间或超时:274毫秒   有关此错误的文档,请访问:   http://seleniumhq.org/exceptions/no_such_element.html构建信息:   版本:' 2.47.1',修订版:' 411b314',时间:' 2015-07-30 02:56:46'   系统信息:主持人:' BA91-CNU21923BJ',ip:' 10.55.17.73',os.name:   ' Windows 7',os.arch:' x86',os.version:' 6.1',java.version:   ' 1.8.0_31'驱动程序信息:org.openqa.selenium.ie.InternetExplorerDriver

这是页面来源的一部分

    < div id="dvPageOptions" style='display:inline;position:absolute;right:10px'>
logged in as: testname</div >

正如您所看到的,我想要断言的id和内容都在源代码中。

其他信息: 我使用IE10和安全设置都是正确的(为所有区域启用了保护模式)

1 个答案:

答案 0 :(得分:0)

谢谢你,Girish Sortur!正如你所提到的,id加载有点迟,所以我决定抛出Wait动作(见下文)。现在它工作正常!

WebDriverWait wait = new WebDriverWait(driver,120);
wait.until(ExpectedConditions.elementToBeClickable(By.id("GoTo")));
assertTrue(driver.findElement(By.id("dvPageOptions")).getText().contains("testname"));