0

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);
});

这里的标题是“谷歌”。我可以修改代码:

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 Search”。在页面有机会加载之前,promise 会更改状态。此示例来自 API 文档,因此它应该可以工作。

我看到了一个等待 SO 的示例,但是我不知道将其转换为 WebDriverJS 中的工作代码,并且 API 没有提到“直到”。

4

1 回答 1

0

您可以在此处查看如何使用waituntil在源代码中: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!
于 2015-04-13T15:26:42.783 回答