检查元素是否在硒中可点击

时间:2014-11-15 08:01:03

标签: python html selenium selenium-webdriver

我能够验证一个元素是否存在以及它是否显示,但似乎无法找到一种方法来查看它是否是“可点击的”(不是在谈论禁用)。

问题在于,通常在填充webform时,我想要的元素在加载时可能会叠加div。 div本身很难被发现,因为它的id,名称甚至css都很灵活。因此,我试图检测输入字段是否可以“点击”或“填充”。当存在重叠div时,该字段不能由普通用户填充(因为div将覆盖输入字段而不允许用户填充它),但它可以由selenium填充。我希望防止这种情况,只有当用户也可以填充它时才允许填充它。

2 个答案:

答案 0 :(得分:15)

你可以wait for the element to be clickable

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

driver = webdriver.Firefox()
driver.get("http://somedomain")

element = WebDriverWait(driver, 10).until(
    EC.element_to_be_clickable((By.ID, "myDynamicElement"))
)

或者,您可以关注EAFP principle并抓住click()引发的异常:

from selenium.common.exceptions import WebDriverException

try:
    element.click()
except WebDriverException:
    print "Element is not clickable"

答案 1 :(得分:3)

在对输入字段执行任何操作之前,您可以使用webElement.isEnabled()webElement.isDisplayed()方法...

我希望这能解决你的问题...

另外,你也可以设置一个循环来检查上面两个条件,如果这些是真的你可以指定输入文本,你可以再次找到相同的元素,你可以得到webelement的文本并将该文本与你输入的文字。如果那些匹配你可以走出循环。