【问题标题】:Why can't Xpath click the element?为什么 Xpath 不能单击元素?
【发布时间】:2020-11-24 04:42:19
【问题描述】:

我正在尝试创建一个可以用这些啤酒瓶装满购物车的机器人。我真的想在几个不同的网站上这样做,但由于某种原因,我只能让它打开页面并单击第一个按钮,然后它不会单击下一步按钮。我尝试了ID,名称,几乎无论如何都可以识别按钮,但它不会单击它。我什至尝试睡眠 3 秒。我试图查看它是否在 iframe 中,但我认为不是。我没有想法......链接是https://www.sideprojectbrewing.com/shop?category=Beer+Release 我正在尝试访问添加到购物车元素,但似乎不起作用 \
从配置导入密钥 从硒导入网络驱动程序

def order(k): 
    driver = webdriver.Chrome(executable_path=r"C:\Users\ezliv\Desktop\ShopBot1\chromedriver_win32\chromedriver.exe")
    driver.get(k['product_url'])
    driver.find_element_by_xpath('//*[@id="thumb-biereblanche"]/div/div[1]/div/div/img').click()
    driver.find_element_by_xpath('//*[@id="yui_3_17_2_1_1606181545139_755"]').click()

\\

【问题讨论】:

  • 我喜欢毫无理由地投反对票。显然,在我问之前我试图找到答案,但我别无选择。
  • 如果您提供实际链接会有所帮助。提及您想要的元素。我没有对此投反对票。反对者应该添加评论。

标签: python selenium-webdriver


【解决方案1】:

你可以试试下面的代码:

driver.get(url_here)

wait = WebDriverWait(driver, 20)

bottle = wait.until(EC.element_to_be_clickable((By.XPATH, '//*[@id="thumb-biereblanche"]/div/div[1]/div/div/img')))
bottle.click()

add_to_cart = wait.until(EC.element_to_be_clickable((By.CLASS_NAME, 'sqs-add-to-cart-button-inner')))
add_to_cart.click()

进口:

from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

【讨论】:

  • 那是等待时间问题吗?声明这些函数/变量是否有助于处理 webdriver 与我尝试这样做的方式?它似乎有效,但我只是想确保我明白我做错了什么。
  • @Typicalusername 是的,你的等待问题。然后,对于add_to_cart元素,它看起来像是一个动态id,所以你无法通过id找到。 WebDriverWaitsleep 效率更高,这是 selenium 提供的等待方法。希望这会有所帮助。
猜你喜欢
  • 2013-05-06
  • 1970-01-01
  • 2021-03-09
  • 1970-01-01
  • 1970-01-01
  • 2017-07-12
  • 1970-01-01
  • 2013-08-11
  • 1970-01-01
相关资源
最近更新 更多