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\"]'))) 

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

  • Селен: страница отображается по-разному
  • Использование профиля firefox по умолчанию с selenium webdriver в python
  • Как получить атрибут элемента из Selenium?
  • Как прокручивать веб-страницу с помощью selenium webdriver в python?
  • Java FluentWait в Python
  • Не удается загрузить файл с помощью Selenium с Python. POST POST / session / b90ee4c1-ef51-4cc0-8543-dfd76c7a151d / файл не соответствовал известной команде
  • запуск селена из python на ubuntu
  • PhantomJS возвращает пустую веб-страницу (python, Selenium)
  • Selenium WebDriverWait, но все же «Элемент не кликается в точке»
  • Python для просмотра и управления веб-страницей
  • Selenium 2.53.5 httplib.BadStatusLine: '' Python
  • Python - лучший язык программирования в мире.