2017-02-03 3 views
3

У меня есть разные кнопки и несколько кнопок с тем же именем «Пуск». Мне нужно нажать на первую найденную кнопку с этим именем (innerHTML). С JQuery это работает:I.click() - селектор в CodeceptJS - как найти первую кнопку со специфическим innerHTML

$('button:contains(Start):first').click()

Как это работает с I.click() - селектор в CodeceptJS? Я не могу найти правильный синтаксис и всегда получаю:

«недействительный селектор: недействительным или незаконным селектор был указан»

Вот API для этой функции: https://github.com/Codeception/CodeceptJS/blob/master/docs/webapi/click.mustache

только рабочий раствор я нашел:

I.click('//button[1]');

Но это решение confusin g, потому что вам нужно знать точное число в порядке этого элемента - и у меня много кнопок с разными именами. Также это не позволяет мне искать по innerHTML, например, «Пуск».

ответ

2

Вы можете использовать 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();"); 
+0

Я не могу проверить это больше, потому что я спросил это почти 5 месяцев назад :) Но поскольку другой ответ не работал, и ваш ответ выглядит законным, я его принимаю. –

+0

@MeteorNewbie Yeah :) Может быть, это поможет кому-то еще – NithyaViji

1

Вам нужно с помощью XPath для этого

//button[1][contains(text(), 'Start')]

+0

ли я использовать эту функцию не так: 'I.click (// кнопка" [ 1] [содержит (текст(), «Старт»)] »);'? Потому что я получаю _ «Clickable element // кнопка [1] [содержит (текст(),« Старт »)] не найден по тексту | CSS | XPath» _ –

+1

в инструментах chrome dev на вкладке «Элементы» try 'ctrl + f' для '// кнопка [1] [содержит (текст(),« Старт »)]', там вы можете проверить шаблон поиска, может быть, 'Start' должен быть в нижнем регистре? –

Смежные вопросы