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

Фотография

Взаимодействие с элементом у которого style="display:none;". И

display:none python selenium

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

#1 Varfalamei

Varfalamei

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

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

Отправлено 19 мая 2016 - 10:51

Добрый день!

Задача: на данном сайте http://skidki.raiffe...ers/?act=search выполнить выбор какого-нибудь региона. 

 

Попытка 1:

from selenium import webdriver
from selenium.webdriver.support.ui import Select

dirver = webdriver.Firefox()
driver.get('http://skidki.raiffeisen.ru/partners/?act=search')
select = Select(driver.find_element_by_name('f-region'))
select.select_by_visible_text("Санкт-Петербург")

Попытка 2:

from selenium import webdriver

dirver = webdriver.Firefox()
driver.get('http://skidki.raiffeisen.ru/partners/?act=search')
driver.find_element_by_xpath("//button[@type='button']").click()
driver.find_element_by_id("ui-multiselect-f-region-option-2").click()
driver.find_element_by_css_selector("label.ui-corner-all.ui-state-hover > span").click()

Попытка 3:

from selenium import webdriver

dirver = webdriver.Firefox()
driver.get('http://skidki.raiffeisen.ru/partners/?act=search')
driver.find_element_by_xpath("//button[contains(concat(' ', @type, ' '), 'button')]").click()
driver.find_element_by_xpath("//option[contains(concat(' ', @value, ' '), '27')]").click()

Во всех случаях получаю NoSuchElementException.

 

Понял, что нужно думать в сторону JS и execute_scripts(), но не могу сообразить, что конкретно делать в моем случае.

Буду очень благодарен развернутым ответам с примерами!

 

PS скрипты вводил в консоли, поэтому нигде нет ожиданий.

 


  • 0

#2 BabyRoot

BabyRoot

    Специалист

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


Отправлено 19 мая 2016 - 11:55

Сначала кликнуть по кнопке css: li.region button

Ожидать появления выпадающего списка css: div.partner-region-filter > ul

А затем кликнуть по региону xpath: //li//span[contains(text(),'Брянская обл.')]


  • 1

#3 DmitriyQA

DmitriyQA

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

  • Members
  • PipPipPip
  • 183 сообщений
  • ФИО:Коваленко Дмитрий Владимирович
  • Город:Tel Aviv

Отправлено 19 мая 2016 - 13:25

Вы не можете кликнуть по эелементу котороый not visible/ not enabled


  • 0

Senior QA/ Wix.com / qaacademy.net


#4 Varfalamei

Varfalamei

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

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

Отправлено 19 мая 2016 - 14:30

Сначала кликнуть по кнопке css: li.region button

Ожидать появления выпадающего списка css: div.partner-region-filter > ul

А затем кликнуть по региону xpath: //li//span[contains(text(),'Брянская обл.')]

Ваш пример не работоспособен.(


  • 0

#5 Varfalamei

Varfalamei

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

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

Отправлено 19 мая 2016 - 14:40

Вы не можете кликнуть по эелементу котороый not visible/ not enabled

Вы не знаете как можно решить эту проблему? Как элемент из нот визибл превратить в визибл?
 

 


 


  • 0

#6 TatyanaV

TatyanaV

    Опытный участник

  • Members
  • PipPipPipPip
  • 388 сообщений
  • ФИО:Воробьева Татьяна


Отправлено 19 мая 2016 - 14:51

Про попытку №2 - "driver.find_element_by_css_selector("label.ui-corner-all.ui-state-hover > span").click()"

Обычно добавление в класс чего-то со словом "hover" происходит при наведении мышки.

Вы в рамках указанного кода - мышку на элемент не наводите, поэтому когда скрипт работает, элемента "label.ui-corner-all.ui-state-hover" вероятней всего нет.


  • 0

#7 DennisM

DennisM

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

  • Members
  • Pip
  • 55 сообщений
  • ФИО:Dennis M
  • Город:Ralegh NC, USA

Отправлено 19 мая 2016 - 15:30

Юзайте Actions

В соседней теме уже обьяснял:

http://software-test...nium-webdriver/

 

Бывает что на странице элементы не Select и не могут инициализироваться пока не выпадут из меню. В селениуме есть Actions.

 

Webelement menu= driver.findElement(By.xpath("//div[@class='меню.Иконка из которой всё выпадает']/a")); //меню. Иконка из которой всё выпадает

Actions mouse = new Actions(driver);

//Двигаем мышь на меню и зависаем над ним. Меню вываливается.
mouse.moveToElement(menu).build().perform();  

//mouse.moveToElement(menu).click().build().perform(); - если надо кликнуть а не висеть над меню

 

//Кликаем по опции из списка. 

Webelement item= driver.findElement(By.xpath("//div[@class='Элемент меню из списка']/a")); //Элемент меню из списка

mouse.moveToElement(item).click().build().perform();
 

//или тут уже сам Webdriver может найти и кликнуть

//item.click();


  • 0

#8 Boltick

Boltick

    Специалист

  • Members
  • PipPipPipPipPip
  • 596 сообщений
  • ФИО:Алексей
  • Город:планета Земля

Отправлено 20 мая 2016 - 14:20

Заранее извинюсь, что не запощу код, который решит проблему, но вот что я предлагаю:

 

1. делаем клик на кнопку

<button type="button" class="ui-multiselect ui-widget ui-state-default ui-corner-all partner-filter partner-region-filter ui-state-active" aria-haspopup="true" style="width: 210px;">

2. Ждем пока вот этот элемент не становится видимым:

<div class="ui-multiselect-menu ui-widget ui-widget-content ui-corner-all partner-filter partner-region-filter ui-multiselect-single" style="width: 217px; top: 317px; left: 201px; display: block;">

по умолчанию он имеет стиль display: none;

<div class="ui-multiselect-menu ui-widget ui-widget-content ui-corner-all partner-filter partner-region-filter ui-multiselect-single" style="width: 217px; top: 317px; left: 201px; display: none;">

3. Кликаем на необходимый элемент из списка (Брянская обл.):

<input id="ui-multiselect-f-region-option-3" name="multiselect_f-region" type="radio" value="8" title="">

  • 1
Алексей Булат
Про Тестинг

#9 cr0w

cr0w

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

  • Members
  • Pip
  • 44 сообщений
  • Город:Kiev

Отправлено 14 июня 2016 - 11:14

driver.get("http://skidki.raiffeisen.ru/partners/?act=search");
driver.findElement(By.cssSelector(".region>button")).click();
Object valuesList = new WebDriverWait(driver, 5).until(
    ExpectedConditions.visibilityOfAllElementsLocatedBy(By.cssSelector("div.partner-region-filter>ul"))
);
WebElement list = (WebElement) ((ArrayList) valuesList).get(0);
list.findElement(By.xpath(String.format("//label[span='%s']", region))).click();

  • 0
In God we trust the rest we test



Темы с аналогичным тегами display:none, python, selenium

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

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