Javascript 诺言履行得太早

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

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);
 //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!