我在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和安全设置都是正确的(为所有区域启用了保护模式)
答案 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"));