【发布时间】:2019-05-02 22:32:48
【问题描述】:
当尝试从 getText() 断言结果时,不断收到错误消息,表明 getText() 返回的是对象而不是字符串。
我对自动化测试很陌生,但我的(有经验的)同事也一样,我们让 JS 开发人员看过它,他也很困惑。
使用 selenium-cucumber-js 作为测试框架。 (这是我们能够在客户端网络上工作的唯一框架)。
我在测试中添加了 console.log 以证明文本是可检索的,它记录它很好但断言仍然失败。
还尝试了此问题中的所有各种建议,但仍无法正常工作 Protractor: element.getText() returns an object and not String
页面对象:
zeroResults: function () {
return driver.wait(until.elementsLocated(by.css(...)), 10000)
.then(function () {
return driver.findElement(by.css(...))
.getText().then(function (searchOutcome) {
console.log(searchOutcome); //this was just to prove the text can be found
return searchOutcome;
//我也尝试过这方面的变化(例如删除最终返回)
步骤定义:
this.Then(/^I should see text "Zero results found"$/, function () {
var searchOutcome = page.xx.zeroResults();
expect(searchOutcome).to.equal('Zero results found');
期望测试通过但得到:
AssertionError: 预期 { Object (flow_, stack_, ...) } 等于“找到零个结果”
如果我将断言更改为:
return Promise.resolve(searchOutcome).should.eventually.equal('找到零个结果');
我明白了:
TypeError:无法“最终”读取未定义的属性
这些只是一些尝试,但所有尝试都有相似的结果。这影响了多个用户,已在多个测试用例和使用不同的断言/期望中得到证明。
任何帮助表示赞赏。
【问题讨论】:
-
欢迎来到 SO。您是否将控制台中打印的文本视为 zeroResults 函数的一部分?
-
您好,感谢您的欢迎。是的,文本确实打印
-
如果使用
console.log打印searchOutcome会发生什么? -
不确定您的意思是否与我已有的不同?当我按原样运行测试时,我得到: √ 我在搜索字段中输入“xxxx” × 然后我应该看到文本“找到零结果” 找到零结果 “找到零结果”是控制台日志的结果。
标签: selenium cucumberjs