I.click()- селектор в CodeceptJS - как найти первую кнопку с определенным innerHTML
У меня есть разные кнопки и несколько кнопок с одинаковым названием "Пуск". Мне нужно нажать на первую найденную кнопку с этим именем (innerHTML). С jQuery это работает с:
$('button:contains(Start):first').click()
Как это работает с I.click()- Селектором в CodeceptJS? Я не могу найти правильный синтаксис и всегда получаю:
msgstr "неверный селектор: указан неверный или недействительный селектор"
Вот API для этой функции: https://github.com/Codeception/CodeceptJS/blob/master/docs/webapi/click.mustache
Единственное рабочее решение, которое я нашел, это:
I.click('//button[1]');
Но это решение сбивает с толку, потому что вам нужно точно знать номер в порядке этого элемента - и у меня много кнопок с разными именами. Также это не позволяет мне искать по innerHTML, например, "Пуск".
3 ответа
Вы могли бы использовать 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();");
Вам нужно использовать XPath для этого
//button[1][contains(text(), 'Start')]
locate("//button[contains(text(), 'Start')]").first()
или
locate("//button[contains(text(), 'Start')]").at(1)
Работает отлично.