为了账号安全,请及时绑定邮箱和手机立即绑定

如何使用Python和Selenium访问网站https://www.aliexpress.com/

如何使用Python和Selenium访问网站https://www.aliexpress.com/

慕标5832272 2023-08-22 17:13:57
我正在尝试访问一个众所周知的在线购物服务,对结果进行过滤和排序,但是当您第一次打开该网站时,该服务有一个提供优惠券的“弹出窗口”。我正试图忽略这个消息。问题是弹出窗口,不是真正的弹出窗口,而是一系列在访问主页后不久动态创建的 div 和 img 标签。我尝试过按类、Xpath、CSS 搜索,但没有成功。谁能告诉我我做错了什么driver = webdriver.Chrome(options=opts, executable_path='chromedriver')driver.delete_all_cookies()driver.get('https://www.aliexpress.com/')timeout = 30try:    WebDriverWait(driver, timeout).until(EC.presence_of_element_located((By.XPATH,'//*[@id="6216442440"]/div/div/img')))except TimeoutException:    driver.quit()
查看完整描述

1 回答

?
开心每一天1111

TA贡献1836条经验 获得超13个赞

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

  • 诱导WebDriverWait等待所需的框架可用并切换到它。

  • 诱导WebDriverWait以使所需元素可单击。

  • 您可以使用以下任一定位器策略:

  • 使用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
  • 浏览器快照:

https://img3.sycdn.imooc.com/64e47caa00012a5312860509.jpg

查看完整回答
反对 回复 2023-08-22
  • 1 回答
  • 0 关注
  • 164 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信