не могу выбрать опцию из окна выбора

Невозможно выбрать элемент в поле выбора с помощью драйвера selenium 2 firefox (или chrome)

<select id="activations_month" name="activations[month]">
<option value="April 2011">April 2011</option>
<option value="May 2011">May 2011</option>
<option value="June 2011">June 2011</option>
<option value="July 2011">July 2011</option>
<option value="August 2011">August 2011</option>
<option selected="selected" value="September 2011">September 2011</option>
</select>

Выбрать dropDown = новый Выбрать (sDriver.findElement (By.id ("activations_month"))); dropDown.selectByValue («Август 2011»);

Я пробовал выбирать по значению, по индексу, по видимому тексту и отменять выбор, и все просто ничего не делало. Моя попытка catch не улавливает исключение, оно выходит обратно в средство запуска тестов testNG и на следующий метод

Это работает нормально и возвращает правильные значения.

List<WebElement> options = dropDown.getOptions(); 

System.out.println(options.size());
System.out.println(options.get(0).getText());
System.out.println(options.get(1).getText());

person ducati1212    schedule 19.09.2011    source источник
comment
дополнительная информация: На самом деле, входя в сам код выбора селена, он не может найти мою строку поиска в проверке xpath, что он делает, как только вы вводите метод selectByVisibleText, тогда он, кажется, просто отскакивает от кода выбора с помощью InvocationTargetException и testNG принимает над   -  person ducati1212    schedule 19.09.2011


Ответы (2)


Это должно обойти вашу проблему, какой бы она ни была. Не лучший способ выбрать вариант, но он должен работать:

List<WebElement> options = dropDown.getOptions();
for(WebElement option : options)
{
    if( option.getAttribute("value").equals("August 2011") )
    {
        option.click();
        break;
    }
}
person RedDeckWins    schedule 20.09.2011
comment
это действительно работает. Мне кажется странным, что мне приходится это делать, поскольку селен изначально хочет позволить вам выбирать с меньшим количеством кода. в любом случае спасибо, если кто-нибудь знает, почему мой исходный код не работает, дайте мне знать - person ducati1212; 20.09.2011
comment
Привет, дукати, обычно то, как ты пытался, работает. Вероятно, есть какая-то причуда на странице, с которой вы работаете. Я видел конкретные случаи страницы, когда selectbyvalue не работал, потому что элемент не был виден в соответствии с селеном, даже если он был виден в браузере. - person RedDeckWins; 21.09.2011

Возможно, это не идеальное решение, но в интересах сохранения простоты (и для того, чтобы заставить его работать), пробовали ли вы создать экземпляр WebDriverBackedSelenium?

driver = new FirefoxDriver();
selenium = new WebDriverBackedSelenium(driver, "your_url");

Далее следует условное -

selenium.select("id=activations_month", "label=May 2011");
selenium.select("id=activations_month", "label=June 2011");
person rs79    schedule 19.09.2011
comment
Проблема в том, что я уже перешел на страницу и сделал несколько шагов раньше. Поэтому мне нужно было бы написать весь этот тест с веб-драйвером, поддерживающим селен. Не идеально. Если это поможет, я думаю, что это настоящая ошибка селена. это сработало некоторое время назад, это код, который я написал, который работал, я хочу сказать, что он сломался с обновлением firefox, но я также обновил модули селена. - person ducati1212; 19.09.2011
comment
f Я пытаюсь выбрать по индексу. Я вставляю в этот код в селене select boolean matched = false; для (параметр WebElement: getOptions ()) {если (match.equals (option.getAttribute (индекс))) {option.setSelected (); если (! isMultiple ()) {возврат; } matched = true; } Я запросил индекс 3 в моем коде вот так: ›dropDown.selectByIndex (3); Я вижу, как он проходит, и по индексу, который он соответствует, переходит к option.setSelected (); и не вызывает invocationTargetException, которое не обрабатывается в методе, поэтому я закончил выбор и вернулся к исполнителю теста. Мысли? - person ducati1212; 19.09.2011
comment
В этой статье приводится эквивалент команд Selenium RC - rostislav-matl.blogspot.com/2011/03/ - person rs79; 20.09.2011
comment
Спасибо, но это те команды, которые я использую, они просто не работают. - person ducati1212; 20.09.2011