【问题标题】:Trying to make selenium click on a button试图让硒点击一个按钮
【发布时间】:2021-01-27 22:53:39
【问题描述】:

我正在尝试让 selenium 单击添加到手推车按钮,但我使用的代码出现错误:

trolley = driver.find_element_by_xpath("//button[@role='button']")
trolley.click()

按钮的检查元素是:

<button class="Buttonstyles__Button-pv6mx8-2 SczzF" data-test="add-to-trolley-button-button" kind="primary" role="button" tabindex="0" type="button" xpath="1" style=""><span><span>Add<span class="sr-only"> </span> to trolley</span></span></button>

【问题讨论】:

  • 我们需要更多的信息。 xpath 看起来是正确的。您正在抓取的网站是什么,该行之前和之后的其他代码是什么,预期结果是什么,实际结果是什么,错误是什么......?
  • 我们需要带有按钮和错误的部分的 HTML 代码,你得到了。

标签: python selenium-webdriver xpath css-selectors webdriverwait


【解决方案1】:

我能够找到一篇关于使用 selenium (https://pythonspot.com/selenium-click-button/) 单击按钮的 pythonspot 文章,他们使用了该功能:

trolley = driver.find_elements_by_xpath(`xpath here`)
trolley.click()

它们之间的区别在于,它返回单个元素的列表,我不确定为什么这可能适用于您的方法,但这是我发现的。只需将该元素更改为元素

【讨论】:

    【解决方案2】:

    要定位元素,您可以使用以下任一Locator Strategies

    • 使用CSS_SELECTOR

      driver.find_element(By.CSS_SELECTOR, "button[class^='Buttonstyles__Button'][data-test='add-to-trolley-button-button'] > span > span").click()
      
    • 使用XPATH

      driver.find_element(By.XPATH, "//button[starts-with(@class, 'Buttonstyles__Button') and @data-test='add-to-trolley-button-button']/span/span").click()
      

    理想情况下,要定位 clickable 元素,您需要将WebDriverWait 诱导为visibility_of_element_located(),您可以使用以下任一Locator Strategies

    • 使用CSS_SELECTOR

      WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "button[class^='Buttonstyles__Button'][data-test='add-to-trolley-button-button'] > span > span"))).click()
      
    • 使用XPATH

      WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//button[starts-with(@class, 'Buttonstyles__Button') and @data-test='add-to-trolley-button-button']/span/span"))).click()
      
    • 注意:您必须添加以下导入:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-12-05
      • 2021-02-20
      • 1970-01-01
      • 2021-12-11
      • 2019-11-13
      • 2021-12-13
      • 2021-08-19
      相关资源
      最近更新 更多