Здравствуйте. Подскажите пожалуйста, как выбрать значение из селекта.
WebElement subject = chromeDriver.findElement(By.xpath("//*[@id=“order_skill”]/div[1]/div[1]"));
subject.click();
Здравствуйте. Подскажите пожалуйста, как выбрать значение из селекта.
WebElement subject = chromeDriver.findElement(By.xpath("//*[@id=“order_skill”]/div[1]/div[1]"));
subject.click();
Как вариант, можно сделать одноименный Enum (Movies, Music, Photo etc.), в котором будут перечислены все элементы селекта. В значении Enum’а будут храниться названия категорий. Делаем один локатор общий для всех вариантов селекта по названию категории, но вместо названия %s, который прогоняется через Formatter и в итоге получаете локатор для выбранной категории. В дальнейшем, можно добавить по принципу композиции в тестовый класс (т.о. сможете, при желании\необходимости параметризовать тест по нужной категории, а можете и не делать это:) Если нужен пример кода - пишите, сейчас, к сожалению, под рукой нет.
P.S. Selenium WD
Если я правильно понимаю, это что-то вроде выпадающего списка. В таком случае я бы использовал Selenide и сделал бы что-то вроде:
public class SomeClass {
private static final SelenideElement SOME_NAME1 = $(By.name(“order_skill”));
private static final SelenideElement SOME_NAME2 = $(“option[value=“15”]”);
public static void someFunctionName() {
SOME_NAME1.click();
SOME_NAME2.waitUntil(visible, 3000).click();
}
}
Использовать xpath при наличии нормального css, на мой личный взгляд, не очень правильно.
Для вашего примера я бы сделал вот так.
Selenium:
By byCss = By.cssSelector("#order_skill");
WebElement dropdown = driver.findElement(byCss);
Select select = new Select(dropdown);
//Ищем по атрибуту value
select.selectByValue(“15”);
//Ищем по тексту
select.selectByVisibleText(“Photo”);
//Ищем по индексу элемента
select.selectByIndex(1);
Selenide:
SelenideElement dropdownList = $("#order_skill");
//Ищем по атрибуту value
dropdownList.selectOptionByValue(“15”);
//Ищем по тексту
dropdownList.selectOptionContainingText(“Photo”);
//Ищем по индексу элемента
dropdownList.selectOption(1);
нельзя сразу выбрать нужный? Например кликать на .select_field option[value="15"]