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

Фотография

Автоматизация drop down со многими данными в Selenium

Selenium

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

#1 sirj77

sirj77

    Новый участник

  • Members
  • Pip
  • 6 сообщений

Отправлено 07 апреля 2015 - 09:55

Добрый день.

 

Подскажите, пожалуйста, каким образом можно написать автоматизацию drop-down листов, у которых очень много данных.

Архитектура такая:

1. Идешь на страницу.

2. Выбираешь drop down "Brand" и внутри его выбираешь по порядку значения начиная с первого

3. После того как выбрал бренд, автоматически в другом drop down "Model" подтягивается список значений для выбранного бренда, выбираешь этот drop down и внутри его выбираешь по порядку значения начиная с первого.

4. После выбора значения модели нужно подождать пока подгрузяться результаты выбора (иногда может несколько секунд, иногда несколько минут..) и проверить, что результаты появилиь (или не появились - в данном случае результат будет 0)

5. Удалить выбрунную модель перед тем как дальше пойти по циклу.

 

... и так нужно пройтись по всему списку: т.е. для каждого бренда выбрать каждую модель, нажать кнопку "Получить результаты", дождаться этих результатов, удалить данную модель и далее пойти по циклу

 

Примерно так выглядит html когда выбираем значение в Brand drop down:

<select id="manufacturer-selector" data-bind="value: selectedManufacturer">
<option value=""></option>
<option value="5637148326">Nokia</option>
<option value="5637148327">Sony</option>
<option value="5637148328">Lenovo-new</option>
....

Примерно так выглядит html когда выбираем значение в Model drop down для выбранного ранее Brand:

<select id="product-selector" data-bind="attr: { disabled: countManufacturerProducts() === 0 }, foreach: manufacturerProducts, value: selectedProduct">
<option data-bind="text: Name, attr: { value: ID }" value="5637191581">390</option>
<option data-bind="text: Name, attr: { value: ID }" value="5637201719">390 Screenphone</option>
<option data-bind="text: Name, attr: { value: ID }" value="5637206334">470 Screenphone</option>47

 

Как я понимаю, нужно мне написать цикл в цикле: первый цикл: я выбираю drop down Brand, получаю каким-то образом полный список всех значений и в цикле бегу по каждому, внутри данного цикла вложенный цикл: после того как выбриаю значение в Brand, получаю полный список всех значений в Model и в цикле бегу по каждому..

 


  • 0

#2 BabyRoot

BabyRoot

    Специалист

  • Members
  • PipPipPipPipPip
  • 833 сообщений


Отправлено 07 апреля 2015 - 10:14

Для работы с селектами:

http://software-test...a-select-option

http://software-test...ok/#entry130685


  • 0

#3 Tishka

Tishka

    Постоянный участник

  • Members
  • PipPipPip
  • 211 сообщений
  • ФИО:Ахрамеев Антон

Отправлено 07 апреля 2015 - 10:15

Для чего вам нужен полный перебор данных drop-down листа?

Если Вам нужно проверить что все модели определенного бренда присутствуют, то как по мне,можно в листе выбрать бренд и использовать find.By(locator) чтобы найти все модели.

Проверять циклом, это не экономично со учета времени.


  • 0

#4 sirj77

sirj77

    Новый участник

  • Members
  • Pip
  • 6 сообщений

Отправлено 07 апреля 2015 - 10:20

Для чего вам нужен полный перебор данных drop-down листа?

Если Вам нужно проверить что все модели определенного бренда присутствуют, то как по мне,можно в листе выбрать бренд и использовать find.By(locator) чтобы найти все модели.

Проверять циклом, это не экономично со учета времени.

Нужен полный перебор всех значений в обоих drop down для того, что бы получить или не получить определенные результаты в итоге, а так же для того, что бы посмотреть производительность сколько оно все выполнялось, потмоу что когда юзер заходит на сайт и впервые что-то выберает, то скорость получения результатов будет оченьб-очень медленная, эсли он выберет опять то же во второй раз, то оно закешируется и во второй раз уже выдаст моментально ответ.

 

Мне ну нужно проверять, что определенные модели определенного бренда присутствуют.


  • 0

#5 Tishka

Tishka

    Постоянный участник

  • Members
  • PipPipPip
  • 211 сообщений
  • ФИО:Ахрамеев Антон

Отправлено 07 апреля 2015 - 10:30

Если нужно будет скролить до определенного элемента, воспользуйтесь скролом javascript.

Это так, на будущее, вдруг пригодится.

Пример, использую для выбора даты(клик с открытием селекта и скрол до нужного элемента)

WebElement element = driver.findElement(By.xpath(locator));
element.click();
WebElement selectDate = driver.findElement(By.xpath(locator));
((JavascriptExecutor) driver).executeScript("arguments[0].scrollIntoView(true)", selectDate);
selectDate.click();


  • 0

#6 Lzk

Lzk

    Специалист

  • Members
  • PipPipPipPipPip
  • 504 сообщений
  • ФИО:Олег
  • Город:Мск

Отправлено 07 апреля 2015 - 11:17

Как я понимаю, нужно мне написать цикл в цикле: первый цикл: я выбираю drop down Brand, получаю каким-то образом полный список всех значений и в цикле бегу по каждому, внутри данного цикла вложенный цикл: после того как выбриаю значение в Brand, получаю полный список всех значений в Model и в цикле бегу по каждому..

 

Визуально , но на python'e можно посмотреть здесь


  • 0

#7 sirj77

sirj77

    Новый участник

  • Members
  • Pip
  • 6 сообщений

Отправлено 07 апреля 2015 - 11:22

 

Как я понимаю, нужно мне написать цикл в цикле: первый цикл: я выбираю drop down Brand, получаю каким-то образом полный список всех значений и в цикле бегу по каждому, внутри данного цикла вложенный цикл: после того как выбриаю значение в Brand, получаю полный список всех значений в Model и в цикле бегу по каждому..

 

Визуально , но на python'e можно посмотреть здесь

 

Спасибо, а на java/c# что-то подобного нет как реализовать?


  • 0



Темы с аналогичным тегами Selenium

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

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