Selenium python, как закрыть всплывающее окно?

Сценарий:

  • Нажмите ссылку «Зарегистрироваться» в верхней навигации.
  • Это открывает форму наложения (всплывает)
  • Я заполняю идентификатор электронной почты и выбираю переключатель (новый клиент)
  • Нажмите «Отправить»
  • Появится новая форма оверлея (всплывающее окно)
  • I Введите всю информацию (сначала, фамилию и т. Д.) И нажмите «Отправить».
  • Наложение (всплывающая форма) открывается, показывая сообщение «Спасибо».

Проблема: – Я хочу нажать «X» в правом верхнем углу этого всплывающего окна, чтобы закрыть его.

Попробовали следующий Xpath:

browser.find_elements_by_xpath('html/body/div[7]/div[1]/a/span').click() 

Это дает ошибку :

 Traceback (most recent call last): File "C:\Python27\Off5th_Registration", line 25, in <module> browser.find_elements_by_xpath('html/body/div[7]/div[1]/a/span').click() AttributeError: 'list' object has no attribute 'click' 

Пробовали по имени класса :

 browser.find_element_by_class_name('ui-dialog-titlebar-close ui-corner-all').click() 

Это дает ошибку :

 Traceback (most recent call last): File "C:\Python27\Off5th_Registration", line 25, in <module> browser.find_element_by_class_name('ui-dialog-titlebar-close ui-corner-all').click() File "C:\Python27\lib\selenium\webdriver\remote\webdriver.py", line 341, in find_element_by_class_name return self.find_element(by=By.CLASS_NAME, value=name) File "C:\Python27\lib\selenium\webdriver\remote\webdriver.py", line 681, in find_element {'using': by, 'value': value})['value'] 

Пожалуйста помоги!!

One Solution collect form web for “Selenium python, как закрыть всплывающее окно?”

Прежде всего, вы используете find_elements_by_xpath и это возвращает вам список элементов, вы должны использовать find_element_by_xpath (обратите внимание на не множественное число).

Во-вторых, я не уверен, что ваш xpath правильный, хотя я не уверен, но я помню из какого-то места, что вам нужно использовать полный xpath (начиная с // или /). Поэтому в вашем случае это будет '//html/body/div[7]/div[1]/a/span'

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

В любом случае, попробуйте сделать следующее:

 browser.find_element_by_xpath('//a[@class=\"ui-dialog-titlebar-close ui-corner-all\"]').click() 

РЕДАКТИРУЙТЕ, чтобы ответить на ваш комментарий: возможно, вы слишком быстро добираетесь туда? Пытаться:

 from selenium import webdriver from selenium.webdriver.common.by import By from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC element = WebDriverWait(driver, 60).until(EC.visibility_of_element_located((By.XPath, '//a[@class=\"ui-dialog-titlebar-close ui-corner-all\"]'))) 

Проверьте здесь.

Interesting Posts

Наличие pylint распознает пользовательский загрузчик модулей

`sock.recv ()` возвращает пустую строку, когда соединение мертво на неблокирующем сокете

Удалите все данные в своем роде в Google App Engine

Темы в twisted … как их правильно использовать?

Вызовите функцию python в C-коде

Pandas: создать условный столбец и вернуть значение, основанное на значениях 2 столбца в другой df.groupby

Использование eval () для python vs. ast.literal_eval ()?

Если выражение в понимании списка с лямбдой

Pimon miminum length / max значение в словаре списков

Создание общего контакта Google с использованием API-контакта создается, но не в общем каталоге

Как хранить `pandas.DataFrame` в двоичном формате PANDAS-LOADABLE, отличном от` pickle`

как выполнить внутреннее или внешнее соединение DataFrames с Pandas по не упрощенному критерию

Как установить переменную среды, зависящую от потока, в Python?

__getattr__ для переменных static / class в python

Итерирование вложенного списка наизнанку

Python - лучший язык программирования в мире.