【问题标题】:How to get this element and click on it with selenium?如何获取这个元素并用硒点击它?
【发布时间】:2020-10-03 06:04:50
【问题描述】:

试图让我的机器人点击提交按钮。

<div class="usertext-buttons">
<button type="submit" onclick="" class="save">save</button>
<button type="button" onclick="return cancel_usertext(this);" class="cancel" style="display:none">cancel</button>
<span class="status"></span></div>

我想用type="submit"获取第二行元素

driver.find_element_by_xpath 不起作用,因为每个帖子的 xpath 都不同。我可以在这里拉什么通常有效的东西?

【问题讨论】:

    标签: python selenium xpath css-selectors webdriverwait


    【解决方案1】:

    要点击文本为 save 的元素,您可以使用以下任一Locator Strategies

    • 使用css_selector

      driver.find_element_by_css_selector("button.save[type='submit'][onclick]").click()
      
    • 使用xpath

      driver.find_element_by_xpath("//button[@class='save' and text()='save'][@type='submit' and @onclick]").click()
      

    理想情况下,要单击元素,您必须将WebDriverWait 诱导为element_to_be_clickable(),并且您可以使用以下任一定位器策略

    • 使用CSS_SELECTOR

      WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "button.save[type='submit'][onclick]"))).click()
      
    • 使用XPATH

      WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//button[@class='save' and text()='save'][@type='submit' and @onclick]"))).click()
      
    • 注意:您必须添加以下导入:

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

    【讨论】:

      【解决方案2】:

      尝试使用 css 选择器:

      driver.find_element_by_css_selector('div.usertext-buttons > button[type=submit]').click()
      

      【讨论】:

        猜你喜欢
        • 2022-01-07
        • 2015-12-20
        • 2019-11-28
        • 1970-01-01
        • 1970-01-01
        • 2014-01-21
        • 2018-01-09
        • 1970-01-01
        • 2020-11-01
        相关资源
        最近更新 更多