【问题标题】:Selecting a submit button with Python (Selenium)使用 Python (Selenium) 选择提交按钮
【发布时间】:2019-10-29 10:36:55
【问题描述】:

我想在使用 cmd 时使用 Python (Selenium) 自动化 Github 存储库。 我到了最后一步:在 Github 上“创建一个新的存储库”,但不能让 python 点击​​“创建存储库”。

感谢您的每一个帮助。

我尝试过: searchBar = driver.find_elements_by_css_selector('button.first-in-line').click()searchBar = driver.find_elements_by_css_selector('button.first-in-line').submit()


<button type="submit" class="btn btn-primary first-in-line" data-disable-with="Creating repository…">
        Create repository
</button>

我希望 python 自动点击“创建存储库”提交按钮,以完成新的 git 存储库。

【问题讨论】:

  • 当你尝试这些事情时,你会得到什么错误或结果?
  • 使用 GitHub API

标签: python selenium xpath css-selectors webdriverwait


【解决方案1】:

当您使用find_elements_by_css_selector 时,它将返回一个列表。您必须使用find_elements_by_css_selector 而不是find_element_by_css_selector

driver.find_element_by_css_selector('button.first-in-line').click()

但是,如果您想使用find_elements_by_css_selector,那么您应该使用 index 来获取第一个匹配项,然后单击下面的代码。

driver.find_elements_by_css_selector('button.first-in-line')[0].click()

【讨论】:

    【解决方案2】:

    要在元素上使用文本为 Create repositoryclick(),您必须为 element_to_be_clickable() 诱导 WebDriverWait,您可以使用以下任一 Locator Strategies

    • 使用CSS_SELECTOR

      WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "button.btn.btn-primary.first-in-line"))).click()
      
    • 使用XPATH

      WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//button[@class='btn btn-primary first-in-line']"))).click()
      
    • 注意:您必须添加以下导入:

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

    【讨论】:

    • 据我所见,GitHub网站大多是同步的,我在问题中没有发现任何暗示问题与时间有关的线索(尽管我承认我没有尝试过我)。你是怎么得出这个结论的?我知道计时是一个很常见的问题,但人们通常认为问题与计时有关,但实际上并非如此,只是在测试代码中引入了不必要的复杂性,这也常常掩盖了真正的问题。
    【解决方案3】:

    试试这个,

    searchBar = driver.find_elements_by_css_selector('.button.first-in-line').click()
    

    有一件事,总是尝试使用driver.find_elements_by_xpath(),它可以帮助你减少很多错误。

    【讨论】:

    • 1. css 选择器中的点表示类名。由于问题中提到的元素没有“按钮”类,因此您的建议不起作用。
    • 2.始终使用 xpath 的建议至少是值得商榷的,如果不是一个坏建议的话,尤其是在涉及类名时。更多详情请见apress.com/in/blog/all-blog-posts/…
    猜你喜欢
    • 2014-04-27
    • 2023-03-23
    • 2018-08-04
    • 2021-03-31
    • 2023-01-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多