[英]Promise executes too early
WebDriverJS API说我可以编写如下代码:
driver.get("http://www.google.com");
driver.findElement(webdriver.By.name("q")).sendKeys("webdriver");
driver.findElement(webdriver.By.name("btnG")).click();
driver.getTitle().then(function(title) {
console.log(title);
//assertEquals("webdriver - Google Search", title);
});
这里的标题是“ Google”。 我可以修改代码:
driver.get("http://www.google.com");
driver.findElement(By.name("q")).sendKeys("webdriver");
driver.findElement(By.name("btnG")).click().then(function(){
/*WebDriverWait.until(function() {
driver.getTitle().then(function(title) {
console.log(title);
title = "webdriver - Google Search"
});
});*/
driver.sleep(3000).then(function() {
driver.getTitle().then(function(title) {
console.log(title);
});
});
});
现在的标题是“ webdriver-Google搜索”。 在页面有机会加载之前,promise会更改状态。 此示例来自API文档,因此可以正常工作。
您可以在以下源代码中查看如何使用“ wait
until
”: https : //code.google.com/p/selenium/source/browse/javascript/webdriver/webdriver.js#653
var webdriver = require('selenium-webdriver');
var driver = new webdriver.Builder().
withCapabilities(webdriver.Capabilities.chrome()).
build();
driver.get('http://www.google.com');
driver.findElement(webdriver.By.name('q')).sendKeys('webdriver');
driver.findElement(webdriver.By.name('btnG')).click();
driver.wait(function() {
return driver.getTitle().then(function(title) {
console.log(title);
return title === 'webdriver - Google Search';
});
}, 1000).then(function() {
console.log('done!')
});
driver.quit();
给出输出:
webdriver - Google Search
done!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.