Транспортир: Как написать локатор, чтобы выбрать нужный div и нажать на него кнопку? - PullRequest
1 голос
/ 01 мая 2020

Например, на странице есть три блока. пример scructare Каждый блок имеет заголовок и div.action с кнопкой пример Заголовки у всех разные. Мне нужно выбрать div с заголовком Text и нажать кнопку

Я нахожу этот элемент следующим образом

return browser.element(by.css('.group-list-item:last-child')).element(by.css('.action'));

Но необходимый блок не обязательно будет последним, это может быть 1 или второй. Заголовок блока не изменяется

Показать элемент Показать структуру

Ответы [ 2 ]

2 голосов
/ 01 мая 2020

Я предполагаю, что заголовок трех блоков: Block1, Block2 и Block3

Теперь можно нажимать кнопку для каждого блока, передавая заголовок блока, поскольку заголовок блока не изменяется и его можно передать время выполнения. Предполагая, что "group-list-item" является именем класса, скажем, под тегом div, а также именем класса кнопки является "action" под кнопкой тега

clickButton (blockTitle: string): ElementFinder {return element ( by.xpath ("* // div [содержит (@ класс, 'group-list-item')] // div (text () = '" + blockTitle + "'] // follow-sibling :: div")) ;}

0 голосов
/ 05 мая 2020

Посмотрите на ответ, который я дал здесь .

Я не фанат использования xpath, потому что они очень fr agile в динамических c или часто обновляются Приложения.

Динамически добавить идентификатор для ваших элементов. Вы также можете использовать следующий селектор, не вызывая xpath:

get buttonByBlockTitle(searchTitle: string) {
    return elements(by.css('div.group-list-item').element(by.css(div.tittle).textContent(searchTitle).element(by.css('button.action');
}

public clickButton(searchTitle: string) {
    return this.buttonByBlockTitle(searchTitle).click();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...