Selenium webdriver 如何使用SeleniumWebDriver检查元素是否可单击

Selenium webdriver 如何使用SeleniumWebDriver检查元素是否可单击,selenium-webdriver,Selenium Webdriver,我有一个容器,它包含许多元素。我在元素之间循环。 我的问题是检查元素是否不可单击的语法是什么 以下内容应能使其发挥作用- element.is_displayed() and element.is_enabled() 这段代码是用Python编写的。您可以将其更改为您选择的语言。您可以尝试以下if-else条件 if(driver.findElement(By.xpath("--xpath of the clickable content")).isEnabled()) { System.ou

我有一个容器,它包含许多元素。我在元素之间循环。
我的问题是检查元素是否不可单击的语法是什么

以下内容应能使其发挥作用-

element.is_displayed() and element.is_enabled()

这段代码是用Python编写的。您可以将其更改为您选择的语言。

您可以尝试以下if-else条件

if(driver.findElement(By.xpath("--xpath of the clickable content")).isEnabled())
{
System.out.println("Element is clickable");
}
else
{
System.out.println("Element is not clickable");
}
现有方法,无法检查元素是否可单击

如果要等待元素可单击,然后单击它,您可能希望如下所示:


实际上,如果不实际单击该元素,可能很难检查该元素是否可单击。

一个选项是执行以下操作

from selenium.common.exceptions import WebDriverException    
try:
  element.click()
  # add to list of clickable elements
except WebDriverException:
  print "Element is not clickable"

您可以为它创建一个自定义关键字,但如果元素被显示并启用,则这是必需的,但并不是使元素可单击的所有条件

自定义库中的自定义关键字示例:

from selenium.webdriver.remote.webelement import WebElement as webelement

def web_element_is_clickable(self, webelement):
    return webelement.is_displayed() and webelement.is_enabled()

您可以执行断言,而不是if-else-alsoIt被启用并不直接意味着它是可点击的-例如,它可能已启用,但被另一个div覆盖。如果selenium尝试点击和元素但不能,它是否会通过返回某个值或任何东西来通知客户端?这取决于各种条件,我们确实有StaleElementException、ElementNotVisibleException等,但在某些情况下,可能捕获了单击,但没有发生单击事件,我们无法跟踪。感谢您提供此代码片段,它可能会提供一些有限的即时帮助。一个恰当的解释将通过说明为什么这是一个很好的问题解决方案而大大提高它的长期价值,并将使它对未来有其他类似问题的读者更有用。请编辑您的答案,添加一些解释,包括您所做的假设。
desplegar = bot.find_element_by_xpath('//*[@id="login-button"]')
try:
    if desplegar.is_enabled:
        desplegar.click()
    else:
         break
except:
    desplegar = None