Webdriver HtmlUnitDriver Java Выпадающий список

#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 (Идентификатор элемента)));