当前位置: 首页 > 知识库问答 >
问题:

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

邰博远
2023-03-14

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

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

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

代码:

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(驱动程序)滚动到元素。move_to_element(driver.find_elements_by_id('sbmt')[1])。在单击按钮之前执行()

(使用[1]访问第二个元素,因为第一个元素将导致selenium.common.exceptions.WebDriverException:Message:TypeError:rect未定义exception。)。

然后我用

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

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

我还使用了driver.find_element_by_xpath和其他,我用火狐和Chrome测试了它。

如何点击按钮而不会出现异常?

任何帮助都将不胜感激


共有1个答案

谯英彦
2023-03-14

要在元素上调用,请单击(),您需要首先使用WebDriver等待与expected_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
    

  •  类似资料:
    • 我想找到(并点击)“Reoni”元素,但我不知道该用什么函数 我试图与 和 但是硒引发了一个无法定位的错误元素,我试过了 这是我要查找的元素: 和完整的html: 如果我不够清楚,或者您需要我的代码,请告诉我。

    • 问题内容: 我很难尝试将.strip与以下代码行结合使用。 谢谢您的帮助。 问题答案: 您可以使用strip()删除尾随和前导空格。 注意:内部空间被保留

    • 问题内容: 是否有一种方便的方法来从Java字符串中剥离任何前导或尾随空格? 就像是: 结果: 将替换keep和this之间的空间。 问题答案: 你可以尝试trim()方法。

    • 问题内容: 我有一个包含两个字段(国家和ISO代码)的表: 在某些行中,第二个字段在开头和/或结尾处都有空格,这会影响查询。 有没有一种方法(在SQL中)遍历表并查找/替换field2中的空格? 问题答案: 您正在寻找TRIM。

    • 网页上有如下链接: 概述 我正在JavaEclipse下用selenium编写一个自动化脚本,希望单击缓存设置选项。有人能帮忙吗?我知道这很简单,但我是这个世界上的新手。我能够自动执行以前的步骤,直到来到这个网页,现在卡在点击缓存设置。 HTML代码段: 我尝试过一些东西,但都没有成功。

    • 问题内容: 该函数会删除尾部和前导空格,但是,如果我只想删除字符串的尾部空格,该怎么办? 问题答案: 如果您使用的是JDK 11或更高版本,则可能应该使用stripTrailing()。 早期的JDK版本 使用正则表达式,您可以将所有尾随空格字符(包括空格和制表符)替换为空字符串()。 输出量 在线演示。 这是正则表达式的细分: –任何空白字符, –匹配一个或多个先前的令牌(可能);即,匹配一个或