Javascript 诺言履行得太早
WebDriverJS说我可以编写如下代码:Javascript 诺言履行得太早,javascript,selenium-webdriver,webdriverjs,Javascript,Selenium Webdriver,Webdriverjs,WebDriverJS说我可以编写如下代码: 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); //asse
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);
});
这里的标题是“谷歌”。我可以修改代码:
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-googlesearch”。承诺在页面有机会加载之前更改状态。此示例来自API文档,因此应该可以使用
我看到了一个示例,但是我不知道如何将其转换为WebDriverJS中的工作代码,API没有提到“直到”。您可以在这里的源代码中看到如何使用
等待和直到:
给出输出:
webdriver - Google Search
done!
直到链接中定义了
,我才看到Webdriver.prototype。我无法让它以任何方式解决问题。代码只尝试了一次就失败了。抱歉-original太复杂了,您可以等待getTitle中的承诺。然后基于文档中的以下内容:>对then()的每次调用都将返回一个表示观察者结果的新承诺。如果回调(或errback)返回一个值(没有返回被视为返回未定义),则承诺将被解析。除非返回值为true,否则无法解析,因此在尝试1000毫秒后将超时。文档应说明“如果回调(或errback)返回真实值(没有返回被视为返回未定义值),则承诺将被解析。”truthy值导致执行序列中的下一个,然后执行。请注意,此答案向我展示了如何在不实际使用等待的情况下获得等待的效果。我仍然不知道webdriverjsapi上是否公开了wait
。
webdriver - Google Search
done!