I.click()-CodeceptJS 中的选择器 - 如何找到具有特定 innerHTML 的第一个按钮
I.click()-selector in CodeceptJS - how to find first button with specific innerHTML
我有各种按钮和几个同名的按钮"Start"。我需要单击第一个找到的具有此名称 (innerHTML) 的按钮。
使用 jQuery 这适用于 :
$('button:contains(Start):first').click()
它如何与 CodeceptJS 中的 I.click()-Selector 一起使用?我找不到正确的语法并且总是得到:
"invalid selector: An invalid or illegal selector was specified"
这是此函数的 API:https://github.com/Codeception/CodeceptJS/blob/master/docs/webapi/click.mustache
我找到的唯一有效解决方案是:
I.click('//button[1]');
但是这个解决方案很混乱,因为你需要知道这个元素顺序中的确切数字——而且我有很多不同名称的按钮。此外,这不允许我通过 innerHTML 进行搜索,例如 "Start".
你需要为此使用 XPath
//button[1][contains(text(), 'Start')]
您可以像这样使用 I.executeScript
:
I.executeScript("var elements = document.getElementsByName('Start');elements[0].click();"); or
I.executeScript("var elements =
document.querySelector(\"button[name*='Start']\");elements[0].click();");
我有各种按钮和几个同名的按钮"Start"。我需要单击第一个找到的具有此名称 (innerHTML) 的按钮。 使用 jQuery 这适用于 :
$('button:contains(Start):first').click()
它如何与 CodeceptJS 中的 I.click()-Selector 一起使用?我找不到正确的语法并且总是得到:
"invalid selector: An invalid or illegal selector was specified"
这是此函数的 API:https://github.com/Codeception/CodeceptJS/blob/master/docs/webapi/click.mustache
我找到的唯一有效解决方案是:
I.click('//button[1]');
但是这个解决方案很混乱,因为你需要知道这个元素顺序中的确切数字——而且我有很多不同名称的按钮。此外,这不允许我通过 innerHTML 进行搜索,例如 "Start".
你需要为此使用 XPath
//button[1][contains(text(), 'Start')]
您可以像这样使用 I.executeScript
:
I.executeScript("var elements = document.getElementsByName('Start');elements[0].click();"); or
I.executeScript("var elements =
document.querySelector(\"button[name*='Start']\");elements[0].click();");