gpt4 book ai didi

node.js - Nodejs 示例中的 selenium-webdriver 不返回当前标题

转载 作者:太空宇宙 更新时间:2023-11-04 01:07:15 25 4
gpt4 key购买 nike

我正在研究 selenium web-driver 示例,但它不起作用。几个月前它运行得很好,所以我想知道我是否做错了什么或者测试方法是否改变了。

var assert = require('assert'),
test = require('selenium-webdriver/testing'),
webdriver = require('selenium-webdriver');

var By = webdriver.By;

test.describe('Google Search', function() {
test.it('should work', function(done) {
var driver = new webdriver.Builder().
withCapabilities(webdriver.Capabilities.chrome()).
build();

driver.get("http://www.google.com");
driver.findElement(By.name("q")).sendKeys("webdriver");
driver.findElement(By.name("btnG")).click();

driver.getTitle().then(function(title) {
assert.equal("webdriver - Google Search", title);
done();
});

driver.quit();
});
});

输出为:

AssertionError: "webdriver - Google Search" == "Google"
Expected :"Google"
Actual :"webdriver - Google Search"

这告诉我该页面尚未更新,但我不确定为什么。该示例显示在此处:https://code.google.com/p/selenium/wiki/WebDriverJs#Getting_Started

package.json 中的 Selenium 版本:2.39.0

更新

我还应该说明测试是通过 Mocha 运行的。莫卡是罪魁祸首吗?当我上次尝试时,它使用的是 Jasmine。

最佳答案

直接来自the example in the documentation ,使用等待:

driver.wait(function() {
return driver.getTitle().then(function(title) {
return title === 'webdriver - Google Search';
});
}, 1000);

为什么需要使用等待?因为 Google 页面是异步工作的。输入 key 后,服务器可能需要一些时间才能发送响应并更新页面。

您还应该删除done。虽然一般情况下您需要它来进行异步测试,但 Selenium 的 Webdriver 化身附带的定序器似乎会在退出时阻塞,直到执行所有操作为止。这个example文档中没有使用它。

此外,如果您想知道为什么没有断言:如果在超时到期时收到超时异常,您就会知道您的测试失败了。

关于node.js - Nodejs 示例中的 selenium-webdriver 不返回当前标题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21871033/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com