这是我用来测试的代码,如果登录后,用户可以移动到另一个页面。但测试仍然失败,告诉我NoSuchElementError: no such element
。
var webdriver = require('selenium-webdriver');
var driver = new webdriver.Builder().
withCapabilities(webdriver.Capabilities.chrome()).
build();
driver.get('localhost:3012');
var loginForm = driver.findElement(webdriver.By.id('login'));
loginForm.findElement(webdriver.By.name('email')).sendKeys('abcd@abcd.com');
loginForm.findElement(webdriver.By.name('password')).sendKeys('1234');
loginForm.submit();
var waiting = false;
var finished = false;
driver.wait(function() {
if (driver.findElement(webdriver.By.id('welcomeMsg')) !== null) {
driver.findElement(webdriver.By.id('problemListHeading')).click();
if (!waiting) {
waiting = true;
driver.wait(function() {
if (driver.findElement(webdriver.By.id('problemList'))) {
finished = true;
return true;
}
});
}
return finished;
}
}, 1000);
driver.quit();
以下是错误日志的一部分:
==== async task ====
WebDriver.findElement(By.id("problemList"))
at webdriver.WebDriver.schedule (/media/Data1/Projects/Assignments/SE_Lab/ninja-store/node_modules/selenium-webdriver/lib/webdriver/webdriver.js:267:15)
答案 0 :(得分:0)
当你说导航到另一个页面时,它是否意味着一个新的浏览器?如果是这样,您可能需要使用以下代码段切换浏览器。
String winHandleBefore = driver.getWindowHandle();
for(String winHandle : driver.getWindowHandles()){
driver.switchTo().window(winHandle);
}
driver.switchTo().window(winHandleBefore);
答案 1 :(得分:0)
如果没有找到该元素,Webdriver的findElement
方法将抛出异常。请尝试使用isElementPresent
。如下所示:
return driver.wait(function () {
return driver.isElementPresent(webdriver.By.name('problemList'), 5000)
});