Уведомления

Группа в Telegram: @pythonsu

#1 Фев. 19, 2014 17:31:45

TorchTT
Зарегистрирован: 2014-02-15
Сообщения: 11
Репутация: +  0  -
Профиль  

Переключение на всплывающее окно Selenium

На странице сайта имеется форма и кнопка.

После заполнения формы и нажатия на кнопку появляется всплывающее окно с еще одной кнопкой. При этом DOM обновляется и в него добавляется код всплывшего окна.

Подскажите, пожалуйста, как при помощи Selenium нажать на кнопку во всплывшем окне?

Забегая вперед, пробовал:

1)

WebDriverWait(driver, 10);
driver.find_element_by_xpath("//div[@id='nameId']/div/div[2]").click();

Вызывает ошибку:
selenium.common.exceptions.NoSuchElementException: Message: 'Unable to locate element: {"method":"xpath","selector":"//div[@id=\'nameId\']/div/div[2]"}'

2)
driver.switch_to_alert();
driver.find_element_by_xpath("//div[@id='nameId']/div/div[2]").click()

Но она создает ошибку:
selenium.common.exceptions.NoSuchElementException: Message: 'Unable to locate element: {"method":"xpath","selector":"//div[@id=\'nameId\']/div/div[2]"}' ;

Если код заменить на:

driver.switch_to_alert();
driver.find_elements_by_xpath("//div[@id='nameId']/div/div[2]").click()

то появляется ошибка:
AttributeError: ‘list’ object has no attribute ‘click’

Отредактировано TorchTT (Фев. 19, 2014 19:10:17)

Офлайн

#2 Фев. 20, 2014 01:06:21

pyuser
От:
Зарегистрирован: 2007-05-13
Сообщения: 658
Репутация: +  36  -
Профиль   Отправить e-mail  

Переключение на всплывающее окно Selenium

Похоже Вам вот это нужно.

TorchTT
то появляется ошибка:
AttributeError: ‘list’ object has no attribute ‘click’
Это просто Ваша невнимательность, функция, которую Вы вызываете возвращает список.



Офлайн

#3 Фев. 20, 2014 10:17:25

TorchTT
Зарегистрирован: 2014-02-15
Сообщения: 11
Репутация: +  0  -
Профиль  

Переключение на всплывающее окно Selenium

Вопрос решен.

Всплывающее окно оказалось просто новым элемент в HTML-тэге исходной страницы.

Для обращения к элементу появившегося окна необходимо выполнить (XPath изменен на корректный):

time.sleep(10)
driver.find_element_by_xpath("//div[@class='nameId']/div[@sbisname='Ok']/div").click();

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version