我对周一通过的测试有一个奇怪的问题,现在失败了。我不断收到与未找到元素相关的相同错误:
Error: An element could not be located on the page using the given search parameters.
at element(".component-search__cta") - click.js:12:17
at click(".component-search__cta") - errorHandler.js:112:39
问题是,该元素肯定是在我的页面对象中的代码定位并单击的。然后,浏览器重定向到新页面(如预期的那样(,但测试会抛出此虚假错误。
代码再简单不过了:
const Page = require('../../common/page_objects/page');
const expect = require('chai').expect;
class HomePage extends Page {
static get elements() {
return {
searchBox: browser.element('.component-search__text'),
searchButton: browser.element('.component-search__cta')
};
}
static search(query){
this.elements.searchBox.waitForVisible();
this.elements.searchBox.setValue(query);
this.elements.searchButton.click();
}
}
this.When(/^I submit a search query "([^"]*)"$/, function(query) {
HomePage.search(query);
});
如果我注释掉searchButton.click();
我不再收到错误,但测试将失败,因为不再单击搜索按钮!
使用"xpath"或CSS选择器,如果选择器不够具体,框架将找不到元素或组件。 所以尝试一个更具体的 css 选择器,比如
span['class ="button"'] 或
//div/label/div我希望这能帮助您解决问题。