检查元素在硒中是不是可点击
Posted
技术标签:
【中文标题】检查元素在硒中是不是可点击【英文标题】:Check whether element is clickable in selenium检查元素在硒中是否可点击 【发布时间】:2015-01-12 15:53:48 【问题描述】:我能够验证一个元素是否存在以及它是否被显示,但似乎无法找到一种方法来查看它是否“可点击”(不是说禁用)。
问题是,通常在填写网络表单时,我想要的元素在加载时可能会被 div 覆盖。 div 本身很难检测,因为它的 id、name 甚至 css 都很灵活。因此,我试图检测输入字段是否可以“点击”或“填充”。当覆盖 div 存在时,该字段不能由普通用户填充(因为 div 会覆盖输入字段并且不允许用户填充它)但它可以由 selenium 填充。我想防止这种情况发生,并且只允许 selenium 填充它,一旦用户也可以填充它。
【问题讨论】:
【参考方案1】:在对输入字段执行任何操作之前,您可以使用webElement.isEnabled()
和webElement.isDisplayed()
方法...
希望这能解决你的问题...
否则,您还可以循环检查上述两个条件,如果这些条件为真,您可以指定输入文本,然后再次找到相同的元素,您可以获取 web 元素的文本并将该文本与您输入的文字。如果这些匹配,您可以退出循环。
【讨论】:
【参考方案2】:单击我一直使用的(对于 selenium)无法访问的元素:
public void clickElement(WebElement el) throws InterruptedException
((javascriptExecutor) driver).executeScript("arguments[0].click();", el);
【讨论】:
【参考方案3】:你可以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"
【讨论】:
似乎以上都不起作用。白色覆盖仍然存在, element_to_be_clickable 等待仍然允许它通过。当我尝试单击不可用的元素时,也不会引发异常。 能否请您分享以下信息:1).relevant html 源代码 2).Selenium Binding 版本 3).Browser 名称和版本 @AayushAgrawal 好吧,那么在您让我们自己尝试之前,要多说您的问题并不容易。请提供您当前拥有的代码,包括您正在测试的目标站点(如果可能)。以上是关于检查元素在硒中是不是可点击的主要内容,如果未能解决你的问题,请参考以下文章