Перейти к содержимому

Фотография

Проблема с Selectom


  • Авторизуйтесь для ответа в теме
Сообщений в теме: 11

#1 ashipovalov

ashipovalov

    Активный участник

  • Members
  • PipPip
  • 142 сообщений
  • ФИО:Шиповалов Александр


Отправлено 26 марта 2012 - 10:20

Суть проблемы, у меня в веб приложении есть несколько элементов, которые на первый взгляд выглядят как Select, но по факту являются, ссылками, а сам Select скрыт, и по клику на него появляется не совсем Select а скорее всплывающее окно. Selenium IDE, не всегда хочет даже записывать обращение к ним, ну а если и записывает, то потом тест на JUnit, не хочет обращаться к ним.

<select id="sex" class="selectBox" name="sex" style="display: none;">
<option value="m">Male</option>
<option value="f">Female</option>
</select>
<a class="selectBox selectBox-dropdown" style="width: 80px; display: inline-block; -moz-user-select: none;" title="" tabindex="0">
<span class="selectBox-label" style="width: 32px;">Female</span>
<span class="selectBox-arrow"></span>
</a>
<ul class="selectBox-dropdown-menu selectBox-options" style="-moz-user-select: none; top: 269.6px; left: 190px; min-width: 76px; display: none;">

  • 0

#2 Rara

Rara

    Активный участник

  • Members
  • PipPip
  • 83 сообщений
  • ФИО:Кондрашов Юрий Алексеевич
  • Город:Минск, Беларусь


Отправлено 26 марта 2012 - 12:00

Была похожая проблема. Решилась использованием класса Select
sexSelect = new Select(driver.findElement(By.cssSelector("#sex")));
sexSelect.selectByValue("f");
В некоторых случаях визуально элемент может не выбираться (зависит от скриптов на странице), но при отправке формы стабильно отправлялось верное значение.
  • 0
Я бы переписал жизнь, но Бог не дает мне исходники

#3 ashipovalov

ashipovalov

    Активный участник

  • Members
  • PipPip
  • 142 сообщений
  • ФИО:Шиповалов Александр


Отправлено 27 марта 2012 - 04:37

К сожалению не помогает. Eclise рапортует о такой ошибке

org.openqa.selenium.ElementNotVisibleException: Element is not currently visible and so may not be interacted with

  • 0

#4 Rara

Rara

    Активный участник

  • Members
  • PipPip
  • 83 сообщений
  • ФИО:Кондрашов Юрий Алексеевич
  • Город:Минск, Беларусь


Отправлено 27 марта 2012 - 08:26

Ок. Приведите код, который записывает Selenium IDE и который потом не работает.
И что значит "не хочет обращаться" к элементам? Не находит? Не выбирает нужные значения?
  • 0
Я бы переписал жизнь, но Бог не дает мне исходники

#5 ashipovalov

ashipovalov

    Активный участник

  • Members
  • PipPip
  • 142 сообщений
  • ФИО:Шиповалов Александр


Отправлено 27 марта 2012 - 08:32

Ок. Приведите код, который записывает Selenium IDE и который потом не работает.
И что значит "не хочет обращаться" к элементам? Не находит? Не выбирает нужные значения?

Именно, что не находит. Кстати даже Selenium IDE далеко не всегда видит клик по этому элементу, но когда видит пишет примерно следующее

<tr>
	<td>click</td>
	<td>css=li.filters &gt; a &gt; span</td>
	<td></td>
</tr>
<tr>
	<td>click</td>
	<td>css=span.match-age &gt; ul.selectBox-dropdown-menu.selectBox-options &gt; li.selectBox-selected &gt; a</td>
	<td></td>
</tr>

  • 0

#6 barancev

barancev

    Администратор

  • Admin
  • PipPipPipPipPipPip
  • 6 872 сообщений
  • ФИО:Алексей Баранцев
  • Город:Россия, Москва


Отправлено 27 марта 2012 - 16:09

Вам не повезло :) Это "фиктивный" select, у него выставлено свойство display:none, о чём Selenium и сообщает в свойственной ему манере -- в виде исключения (ElementNotVisibleException). Вместо этого пользователь работает с некими ul и li, которые имитируют работу реального выпадающего списка. Так что Selenium IDE, вероятно, генерирует правильный код. Почему не работает? Чтобы это понять, надо больше деталей. Возможно, просто selenium слишком быстр и браузер не успевает сформировать структуру страницы, так бывает часто. Лучше всего дать ссылку на ваше приложение и показать, "вот тут не кликает", или сделать небольшой отдельно работающий пример, или показать на каком-нибудь демо-сайте, где собраны разные виджеты того фреймворка, который у вас используется.
  • 0
Алексей Баранцев
Тренинги для тестировщиков (тестирование производительности, защищенности, тест-дизайн, автоматизация):
Линейка тренингов по Selenium

#7 ashipovalov

ashipovalov

    Активный участник

  • Members
  • PipPip
  • 142 сообщений
  • ФИО:Шиповалов Александр


Отправлено 28 марта 2012 - 00:49

Ну, что же значит будем считать тренинг начался раньше, чем я расчитывал) Алексей, я бы не хотел выкладывать ссылку в теме - если я кину ее в личку, это будет нормально?
  • 0

#8 ashipovalov

ashipovalov

    Активный участник

  • Members
  • PipPip
  • 142 сообщений
  • ФИО:Шиповалов Александр


Отправлено 28 марта 2012 - 01:45

Хотя, вот нашел демо http://labs.abeautif...uery-selectBox/
первая ссылка - статья с описаниеем, вторая демо-страница применения
  • 0

#9 ashipovalov

ashipovalov

    Активный участник

  • Members
  • PipPip
  • 142 сообщений
  • ФИО:Шиповалов Александр


Отправлено 30 марта 2012 - 03:05

Неужели никто не сможет помочь советом?
  • 0

#10 barancev

barancev

    Администратор

  • Admin
  • PipPipPipPipPipPip
  • 6 872 сообщений
  • ФИО:Алексей Баранцев
  • Город:Россия, Москва


Отправлено 30 марта 2012 - 05:45

Да, сделаю пример.
  • 0
Алексей Баранцев
Тренинги для тестировщиков (тестирование производительности, защищенности, тест-дизайн, автоматизация):
Линейка тренингов по Selenium

#11 barancev

barancev

    Администратор

  • Admin
  • PipPipPipPipPipPip
  • 6 872 сообщений
  • ФИО:Алексей Баранцев
  • Город:Россия, Москва


Отправлено 30 марта 2012 - 09:22

    WebDriver driver = new InternetExplorerDriver();
    driver.get("http://labs.abeautifulsite.net/jquery-selectBox/");
    driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);
    driver.findElement(By.cssSelector("a.custom-class2")).click();
    driver.findElements(By.cssSelector("ul.custom-class2-selectBox-dropdown-menu li")).get(5).click();

Вот с невидимыми элементами списка проблема, список имеет стиль "display: inline-block;", Selenium плохо работает с такими элементами, надо явно использовать JavaScript для принудительного скроллирования инлайн-блока. Хотя я ещё спрошу у разработчиков, может быть есть более правильный способ работы с инлайн-блоками.
  • 0
Алексей Баранцев
Тренинги для тестировщиков (тестирование производительности, защищенности, тест-дизайн, автоматизация):
Линейка тренингов по Selenium

#12 ashipovalov

ashipovalov

    Активный участник

  • Members
  • PipPip
  • 142 сообщений
  • ФИО:Шиповалов Александр


Отправлено 02 апреля 2012 - 08:20

Получается, нажать на стрелку
driver.findElement(By.cssSelector("fieldset.iam a .selectBox-arrow")).click();
но в этом поле два фиктивных селекта, да и до сих пор неясно, как именно обратиться к нужному выпадающему элементу
  • 0


Количество пользователей, читающих эту тему: 1

0 пользователей, 1 гостей, 0 анонимных