通过单击selenium中的关闭按钮关闭弹出窗口

2024-04-20 08:21:15 发布

您现在位置:Python中文网/ 问答频道 /正文

我想关闭当我点击特定url时出现的弹出窗口。以下是该页面的“检查元素”窗口:

enter image description here

以下是我尝试过的:

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

但它给出了以下错误:

InvalidSelectorException: Message: Given css selector expression "i[@class='popupCloseIcon']" is invalid: InvalidSelectorError: Document.querySelector: 'i[@class='popupCloseIcon']' is not a valid selector: "i[@class='popupCloseIcon']"

下面是弹出窗口出现的url:https://www.investing.com/equities/oil---gas-dev-historical-data 一旦通过selenium打开url,几秒钟后就会出现弹出窗口。 我怎样才能点击关闭按钮


Tags: url元素byisdriver错误页面element
3条回答

当访问urlhttps://www.investing.com/equities/oil -gas-dev-historical-data几秒钟后出现弹出窗口以关闭弹出窗口时,您需要为element_to_be_clickable()导入WebDriverWait,您可以使用以下任一Locator Strategies

  • 使用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
    

首先,“i[@class='popupCloseIcon']”是无效的css选择器定位器,它应该是“i[class='popupCloseIcon']”。其次,有四个元素映射到“i[class='popupCloseIcon']”,css选择器“div.right>;i.popupCloseIcon”将帮助您定位目标元素

弹出窗口在一段时间后出现,因此您需要等待解决此问题。您的选择器无效: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

相关问题 更多 >