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)

Работает отлично.

Другие вопросы по тегам