【问题标题】:Selenium can't click a button pythonSelenium 无法单击按钮 python
【发布时间】:2020-12-21 20:34:45
【问题描述】:

你能告诉我为什么 selenium 不能点击按钮吗?我试过 xpath、id、class、text 什么都没有。 我得到的信息是没有这样的元素或类似的东西,但在 Firefox 中我可以看到有一个名称相同的项目。不知道怎么回事。

self.driver.execute_script("window.scrollTo(0, 3500)")
sleep(1)
#self.action.move_to_element(przycisk).click(sprawdz).perform()
self.driver.find_element_by_xpath("//button[@id='sprawdz']").click();
#self.driver.find_element_by_link_text("ok").click();

【问题讨论】:

    标签: python selenium xpath css-selectors webdriverwait


    【解决方案1】:

    要点击元素,您可以使用以下任一Locator Strategies

    • 使用css_selector

      self.driver.find_element_by_css_selector("button.btn.btn-large#sprawdz").click()
      
    • 使用xpath

      self.driver.find_element_by_xpath("//button[@class='btn btn-large' and @id='sprawdz']").click()
      

    理想情况下,点击您需要为WebDriverWait 诱导element_to_be_clickable() 的元素,您可以使用以下任一Locator Strategies

    • 使用CSS_SELECTOR

      WebDriverWait(self.driver, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "button.btn.btn-large#sprawdz"))).click()
      
    • 使用XPATH

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

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

    更新

    作为最后的手段,您可以使用execute_script() 方法,如下所示:

    • 使用CSS_SELECTOR:

      driver.execute_script("arguments[0].click();", WebDriverWait(self.driver, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "button.btn.btn-large#sprawdz"))))
      
    • 使用XPATH

      driver.execute_script("arguments[0].click();", WebDriverWait(self.driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//button[@class='btn btn-large' and @id='sprawdz']"))))
      

    【讨论】:

    • 很遗憾没有帮助。
    • @MikołajK 查看更新后的答案并告诉我结果
    • raise exception_class(message, screen, stacktrace, alert_text) selenium.common.exceptions.UnexpectedAlertPresentException:警报文本:无消息:关闭用户提示对话框:Gotowe? Można sprawdzić?
    • 此消息:已关闭的用户提示对话框:Gotowe? Można sprawdzić?是单击按钮后的弹出/警报。但脚本没有点击它。我只能手动单击按钮,然后我会看到一条警报,询问我是否确定要检查。也许这个警报是个问题
    • @MikołajK 这个解决方案是点击带有 SPRAWDZ 文本的按钮。我们不确定popup / alert。随意根据您的新要求提出新问题吗? Stackoverflow 贡献者将很乐意为您提供帮助。
    【解决方案2】:

    试试这个

    element = self.driver.find_element_by_xpath("//button[@id='sprawdz']")
    self.driver.execute_script("arguments[0].click();", element)
    

    【讨论】:

    • 或试试这个 self.driver.find_element_by_id('sprawdz').click()
    猜你喜欢
    • 2020-07-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多