Javascript 每当测试导航到另一个页面时,我是否必须创建一个新的web驱动程序对象?
这是我用来测试用户登录后是否能够移动到另一个页面的代码。但是测试一直失败,告诉我Javascript 每当测试导航到另一个页面时,我是否必须创建一个新的web驱动程序对象?,javascript,node.js,testing,selenium,selenium-webdriver,Javascript,Node.js,Testing,Selenium,Selenium Webdriver,这是我用来测试用户登录后是否能够移动到另一个页面的代码。但是测试一直失败,告诉我NoSuchElementError:没有这样的元素 var webdriver = require('selenium-webdriver'); var driver = new webdriver.Builder(). withCapabilities(webdriver.Capabilities.chrome()). build(); driver.get('localhost:3012');
NoSuchElementError:没有这样的元素
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)
当你说导航到另一个页面时,是不是意味着一个新的浏览器?如果是这样,您可能必须使用下面的代码段切换浏览器
String winHandleBefore = driver.getWindowHandle();
for(String winHandle : driver.getWindowHandles()){
driver.switchTo().window(winHandle);
}
driver.switchTo().window(winHandleBefore);
Webdriver的
findElement
方法如果找不到元素,将抛出异常。尝试改用isElementPresent
。比如:
return driver.wait(function () {
return driver.isElementPresent(webdriver.By.name('problemList'), 5000)
});
您确定元素已加载到DOM中吗?此外,检查图元是否不在框架/iframe内。如果可能,请发布HTML代码。否。一种常见的策略是实现页面对象模型,通过该模型,您可以在各种页面对象周围传递
驱动程序
实例。(虽然我对WebDriverJS库不太了解,但这样做可能会更困难)。不,不是新浏览器。当我点击超链接时,只是一个不同的页面。