Закрытие всплывающего окна нажатием кнопки закрытия в селене - PullRequest
0 голосов
/ 18 марта 2020

Я хочу закрыть всплывающее окно, которое появляется, когда я нажимаю на определенный URL. Вот окно «проверить элемент» этой страницы:

enter image description here

Вот что я пробовал:

driver.find_element_by_css_selector("i[@class='popupCloseIcon']").click()

Но выдает следующую ошибку:

InvalidSelectorException: Сообщение: задано css выражение селектора "i [@ class = 'popupCloseIcon']" недопустимо: InvalidSelectorError: Document.querySelector: 'i [@ class = 'popupCloseIcon'] 'не является допустимым селектором: "i [@ class =' ​​popupCloseIcon ']"

Вот URL-адрес, где появляется всплывающее окно: https://www.investing.com/equities/oil---gas-dev-historical-data После того, как URL открывается через селен, всплывающее окно появляется через несколько секунд. Как я могу нажать эту кнопку закрытия?

Ответы [ 3 ]

2 голосов
/ 18 марта 2020

Через некоторое время появляется всплывающее окно, поэтому вам нужно подождать, чтобы решить эту проблему. И у вас есть недействительный селектор: i[@class='popupCloseIcon'], используйте i[class*='largeBannerCloser']

image close

Попробуйте следующее:

driver.get('https://www.investing.com/equities/oil---gas-dev-historical-data')

try:
    popup = WebDriverWait(driver, 60).until(EC.visibility_of_element_located((By.CSS_SELECTOR, "i[class*='largeBannerCloser']")))
    popup.click()
except TimeoutException as to:
    print(to)

Это это ожидание до 60 секунд максимум.

После импорта:

from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.common.exceptions import TimeoutException
0 голосов
/ 18 марта 2020

Когда через несколько секунд появляется всплывающее окно с доступом к URL https://www.investing.com/equities/oil---gas-dev-historical-data, чтобы закрыть всплывающее окно, вам нужно вызвать WebDriverWait для element_to_be_clickable(), и вы можете использовать любой из следующих Стратегий локатора :

  • Использование CSS_SELECTOR:

    WebDriverWait(driver, 60).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "i.popupCloseIcon.largeBannerCloser"))).click()
    
  • Использование XPATH:

    WebDriverWait(driver, 60).until(EC.element_to_be_clickable((By.XPATH, "//i[@class='popupCloseIcon largeBannerCloser']"))).click()
    
  • Примечание : Вы должны добавить следующие импорта:

    from selenium.webdriver.support.ui import WebDriverWait
    from selenium.webdriver.common.by import By
    from selenium.webdriver.support import expected_conditions as EC
    
0 голосов
/ 18 марта 2020

Во-первых, "i [@ class = 'popupCloseIcon']" является недопустимым css указателем селектора, это должно быть "i [class = 'popupCloseIcon']". Во-вторых, есть четыре элемента, сопоставленных с «i [class = 'popupCloseIcon']», селектор css «div.right> i.popupCloseIcon» поможет вам найти целевой элемент

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...