【问题标题】:How to click and close the banner after accessing the website https://www.aliexpress.com/ using Python and Selenium使用 Python 和 Selenium 访问网站 https://www.aliexpress.com/ 后如何点击关闭横幅
【发布时间】:2021-01-06 06:08:05
【问题描述】:

我正在尝试访问一个著名的在线购物服务,以过滤和排序结果,但是当您第一次打开该网站时,该服务有一个“弹出窗口”提供优惠券。我正在尝试忽略该消息。问题是弹出窗口,不是真正的弹出窗口,它是一系列 div 和 img 标签,它们是在访问主页后不久动态创建的。

我尝试按类、Xpath、CSS 进行搜索,但没有成功。谁能告诉我我做错了什么

driver = webdriver.Chrome(options=opts, executable_path='chromedriver')
driver.delete_all_cookies()
driver.get('https://www.aliexpress.com/')

timeout = 30

try:
    WebDriverWait(driver, timeout).until(EC.presence_of_element_located((By.XPATH,'//*[@id="6216442440"]/div/div/img')))
except TimeoutException:
    driver.quit()

【问题讨论】:

    标签: python selenium iframe webdriverwait aliexpress


    【解决方案1】:

    关闭消息的元素位于<iframe> 内,因此您必须:

    • 诱导WebDriverWait 使所需的帧可用并切换到它

    • 诱导WebDriverWait 使所需的元素可点击

    • 您可以使用以下任一Locator Strategies

    • 使用CSS_SELECTOR

      driver.get('https://www.aliexpress.com/')
      WebDriverWait(driver, 20).until(EC.frame_to_be_available_and_switch_to_it((By.CSS_SELECTOR,"iframe[src^='https://campaign.aliexpress.com/wow/gcp/']")))
      WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "img.rax-image[src^='https://img.alicdn.com/tfs']"))).click()
      
    • 使用XPATH

      driver.get('https://www.aliexpress.com/')
      WebDriverWait(driver, 20).until(EC.frame_to_be_available_and_switch_to_it((By.XPATH,"//iframe[starts-with(@src, 'https://campaign.aliexpress.com/wow/gcp/')]")))
      WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//img[@class='rax-image ' and starts-with(@src, 'https://img.alicdn.com/tfs')]"))).click()
      
    • 注意:您必须添加以下导入:

      from selenium.webdriver.support.ui import WebDriverWait
      from selenium.webdriver.common.by import By
      from selenium.webdriver.support import expected_conditions as EC
      
    • 浏览器快照:


    参考

    您可以在以下位置找到一些相关讨论:

    【讨论】:

    • 不错的一个!我错过了它在 iframe 中的部分。
    • 从 [selenium] 尝试回答 [python] 问题时稍作休息......但这些很难大声笑
    • @Jortega 请继续关注,我正在创建 Selenium 聊天室。在那里见。
    • 算我一个! (添加额外字符以满足最小长度要求)
    • 谢谢你,我想我昨天下午的大部分时间都花在了那个上面。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-17
    • 2021-06-10
    • 2020-01-26
    • 2021-09-21
    • 1970-01-01
    • 2018-05-13
    相关资源
    最近更新 更多