#java #selenium #webdriver
#java #selenium #webdriver
Вопрос:
Я новичок на этом форуме, и я вроде как новичок в Selenium и всем, что с ним связано. Я немного знаком с Java, но я, конечно, не профи
Я знаю, что существуют подобные потоки, но все же я еще не нашел свой ответ… Поскольку некоторые из них находятся на C # или .NET, … .
Я использую Webdriver и HtmlUnitDriver, потому что я не хочу, чтобы Selenium открывал браузер. Все должно быть сделано в фоновом режиме (не хочу ничего видеть, только 1 результат (если все прошло нормально или нет)).
Хорошо, это было сказано, вот ситуация. Я проверяю веб-сайт, и в какой-то момент мне нужно выбрать опцию из выпадающего списка (скажем, второй вариант). Но проблема в том, что это не сработает…
Вот некоторый код, который я использую:
public class LoginLogout implements SeleniumTest{
private WebDriver webDriver;
@Override
public void setUp(String baseURL){
webDriver = new HtmlUnitDriver();
}
@Override
public void invoke(){
// Login
webDriver.get("http://website");
webDriver.findElement(By.name("username")).sendKeys("Dummy123456");
webDriver.findElement(By.name("password")).sendKeys("Muddy");
webDriver.findElement(By.className("Submit")).click();
webDriver.findElement(By.name("/catalogue")).click();
webDriver.findElement(By.name("/catalogue/search/synthesis/s10")).click();
webDriver.findElement(By.name("firstYear")).findElement(By.name("2008")).isSelected();
webDriver.findElement(By.name("lastYear")).findElement(By.name("2008")).isSelected();
webDriver.findElement(By.className("Submit")).click();
webDriver.findElement(By.className("Label")).click();
}
@Override
public void tearDown(){
webDriver.close();
}
}
Там, где я выбираю FIRSTYEAR и LASTYEAR, вот где все идет не так…
Кто-нибудь, пожалуйста, может мне помочь!!! Было бы здорово, если бы я заставил это работать (с вашей помощью)
Заранее спасибо
Ответ №1:
IsSelected () только сообщит вам, выбран элемент уже или нет, он фактически ничего не установит. Я полагаю, что вы хотите привести WebElement к объекту Select, который предоставляет методы для выбора элементов select box.
Select selectBox = (Select)webDriver.findElement(By.name("firstYear"));
selectBox.selectByValue("2008");
Вы также можете выбрать по индексу, который я нахожу более надежным в тех случаях, когда мне на самом деле все равно, какое значение выбрано, но я хочу убедиться, что что-то выбрано.
selectBox.selectByIndex(0); // chooses first item.
Комментарии:
1. Спасибо за ваш ответ. когда я попытался — Select selectBox = (Выбрать)WebDriver.findElement(By.name («firstYear»)); selectBox.selectByValue(«2008»); — Eclipse подчеркивает эту часть selectByValue и говорит, что «Метод selectByValue(строка) не определен для типа select» что насчет этого?
2. Прежде всего, используете ли вы Selenium 2? Я предположил это, потому что вы используете WebDriver. Во-вторых, убедитесь, что вы импортируете правильный класс Select, он должен быть org.openqa.selenium.support.ui.Select.
3. Для меня немного отличается: выберите selectBox = new Select(WebDriver.findElement(By.id (Идентификатор элемента)));