Automated tests webdriverio中的cypress cy.contains()等价物是什么?

Automated tests webdriverio中的cypress cy.contains()等价物是什么?,automated-tests,cypress,webdriver-io,Automated Tests,Cypress,Webdriver Io,我以前主要与cypress合作进行e2e自动化测试,现在我已经开始从事webdriverIO的工作。对于cypress命令,例如 cy.get(“[data testid='nav-bar']”)。包含(“搜索框”)。单击(); 在webdriverIO中,这一功能的等效功能是什么?我在PageObject模型中尝试了以下方法 类主页扩展页面{ 获取navBar(){ 返回浏览器。$(“[data testid='nav-bar']”); } openSearchBox(){ 单击('/*[t

我以前主要与cypress合作进行e2e自动化测试,现在我已经开始从事webdriverIO的工作。对于cypress命令,例如

cy.get(“[data testid='nav-bar']”)。包含(“搜索框”)。单击();
在webdriverIO中,这一功能的等效功能是什么?我在PageObject模型中尝试了以下方法

类主页扩展页面{
获取navBar(){
返回浏览器。$(“[data testid='nav-bar']”);
}
openSearchBox(){
单击('/*[text=“Search Box”]');
}
}

但是,这种方法似乎不起作用,对此的任何帮助都将不胜感激。

暂时不使用页面对象,您可以在WebDrivero中键入:

const bar=$('[data testid='nav-bar']);
expect(bar.getText()).toInclude('Search Box');
bar.click();
您可以使用chai而不是Jest Matchers进行断言:

const expectChai=require('chai')。expect;
// ...
expectChai(bar.getText()).to.have.string('Search Box');
// ...

cy.get(“[data testid='nav-bar']”)。包含(“搜索框”)。单击();
可以通过xpath选择器实现

$("[data-testid='nav-bar']").$("./*[descendant-or-self::*[contains(text(), 'Search Box')]]").click();

它看起来有点丑,但是考虑添加一个类似Cypress的代码>包含< /C> >:

// put this to `before` hook in your wdio.conf.js
browser.addCommand('cyContains', function(text) {
  this.waitForExist()
  return this.$(`./*[descendant-or-self::*[contains(text(), '${text}')]]`)
}, true)

$("[data-testid='nav-bar']").cyContains("Search Box").click();
附言。 在本页右侧的浏览器控制台中签出选择器,然后粘贴到浏览器控制台中

$x("//span[descendant-or-self::*[contains(text(), 'Search Box')]]")

我不推荐使用柴。请使用内置的expect断言库