【问题标题】:wdio clicks an element then throws exception saying element could not be locatedwdio 单击一个元素然后抛出异常说元素无法定位
【发布时间】:2017-08-23 16:42:58
【问题描述】:

我有一个奇怪的问题,周一通过的测试现在失败了。我不断收到与未找到元素有关的相同错误:

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(); 我不会再收到错误消息,但测试将失败,因为不再单击搜索按钮!

【问题讨论】:

  • 如果丢弃明显原因(没有元素,需要等待元素):可能是页面上的多个元素('.component-search__cta')?
  • 该定位器仅返回 Chrome 控制台中的一个元素。虽然更好的定位器是button.component-search__cta;改变它并没有解决我的问题。我也尝试了waitForVisible方法,但是这个问题的奇怪之处在于我每次都能看到按钮被点击。

标签: javascript selenium-webdriver selenium-chromedriver webdriver-io


【解决方案1】:

使用“xpath”或 css 选择器,如果选择器不够具体,则框架将找不到元素或组件。 所以尝试一个更具体的 CSS 选择器,比如

span['class="button"'] 或 //div/label/div

我希望这能帮助您解决问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-03-23
    • 1970-01-01
    • 1970-01-01
    • 2018-06-10
    • 1970-01-01
    • 2014-01-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多