当textContext包含前导和尾随空格字符时,如何单击按钮?

2024-10-16 17:26:15 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试使用Selenium和python单击以下按钮:

<button type="submit" tabindex="4" id="sbmt" name="_eventId_proceed">
          Einloggen
</button>

这只是一个简单的按钮,如下所示:

enter image description here

代码:

driver.find_element_by_id('sbmt').click()

这将导致以下异常:

selenium.common.exceptions.ElementNotInteractableException: Message:
Element <button id="sbmt" name="_eventId_proceed" type="submit">
could not be scrolledinto view

因此,在单击按钮之前,我尝试使用ActionChains(driver).move_to_element(driver.find_elements_by_id('sbmt')[1]).perform()滚动到元素

(使用[1]访问第二个元素,因为第一个元素将导致selenium.common.exceptions.WebDriverException: Message: TypeError: rect is undefined异常。)

然后我用

wait = WebDriverWait(driver, 5)
submit_btn = wait.until(EC.element_to_be_clickable((By.ID, 'sbmt')))

以等待按钮可点击。这些都没有帮助

我还使用了driver.find_element_by_xpath和其他工具,我用Firefox和Chrome对其进行了测试

如何单击按钮而不出现异常

任何帮助都将不胜感激


Tags: nameid元素bytypedriverseleniumbutton
1条回答
网友
1楼 · 发布于 2024-10-16 17:26:15

要在元素上调用click(),首先需要将WebDriverWaitexpected_conditions一起使用,以使元素可单击,并且可以使用以下解决方案:

  • 使用XPATH

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

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

相关问题 更多 >