Доброго времени суток! Подскажите, пожалуйста, как можно найти один Селенид Элемент в другом? У элемента есть метод getSearchCriteria(), возвращающий строку, но с элементами указания типа локатора, например: “By.xpath [путь xpath]”. Может, есть метод, обрабатывающий эту строку, или нужно писать свой и регулярками выбирать нужный вариант поиска?
Никаких строк и регулярок не нужно.
Всё намного проще:
$("#parent").find(".child")
нет, видимо, я не так объяснил) У меня есть PageObject страница, на которой через кастомную аннотацию описаны SelenideElement’ы, с присвоенным каждому именем.
В дальнейшем, в файле шагов мы вызываем метод, который возвращает этот самый элемент, найденный по имени.
Соответственно, в шаге можно оперировать только уже полученными SelenideElement’ами. Как, к примеру, в этом случае можно реализовать шаг: В блоке {имя блока} присутствует кнопка {имя кнопки}?
Либо я вас снова не понимаю, либо я уже ответил.
class MyPage {
@FindBy(name = "#cart")
private SelenideElement cart;
public void unselectItem(String itemTitle) {
card.find(byText(itemTitle)).click();
}
}
В уже существующем фреймворке такая модель:
public class BasePage {
@Name("таблица")
private SelenideElement table = $("table");
@Name("кнопка")
private SelenideElement button = $x(".//button");
}
public class BaseSteps {
@Если("в таблице {string} кликнуть на элемент {string}")
public void checkElement(String rootElementName, String elementName) {
SelenideElement rootElement = pageManager.getCurrentPage().getElementByName("rootElementName");
SelenideElement element = pageManager.getCurrentPage().getElementByName("elementName");
//как и можно ли найти данную кнопку в таблице, чтобы выстроился путь в стиле $("table").$x(".//button");?
}
// в cucumber сценарии:
* в таблице "таблица" кликнуть на элемент "кнопка"
хотелось узнать, есть ли такой способ, если нет, тогда просто переделаю фреймворк)
Ох, бдд, бдд… Не страдали бы вы этой ерундой…
Да, похоже, такого способа нет, и нужно переделать фреймворк.
Либо перепишите кейс.
5 балов!