如何使用Java检查SeleniumWebDriver中的元素是否可单击

如何使用Java检查SeleniumWebDriver中的元素是否可单击,java,selenium-webdriver,Java,Selenium Webdriver,我必须检查文本框是否只接受特定数量的字符。如果字符超过,则不会给出任何错误,只会将文本变成红色。另一个文本框根本不接受其他字符。如何验证文本框在这两种情况下都不接受更多字符 我有一个选择,就是检查页面上可见的“保存”按钮是否可点击。如何使用Java中的Selenium WebDriver执行此操作?您可以使用isEnabled()检查元素是否已启用 driver.findElement(By.xpath("//path/to/element").isEnabled(); 如果按钮可单击,则返回

我必须检查文本框是否只接受特定数量的字符。如果字符超过,则不会给出任何错误,只会将文本变成红色。另一个文本框根本不接受其他字符。如何验证文本框在这两种情况下都不接受更多字符


我有一个选择,就是检查页面上可见的“保存”按钮是否可点击。如何使用Java中的Selenium WebDriver执行此操作?

您可以使用
isEnabled()
检查元素是否已启用

driver.findElement(By.xpath("//path/to/element").isEnabled();

如果按钮可单击,则返回
true

如果单击表示未禁用,则可以使用
WebElement.isEnabled()

关于不接受额外字符的文本输入,如果您想检测它,则取决于如何强制执行该约束。例如,如果它是通过执行的,您可以尝试从
输入
元素(
WebElement.getAttribute(String)
)中读取该属性。在这种情况下,您将提前知道可以向文本框发送多少个字符


关于将文本变为红色的文本输入,如果要检测,应首先了解文本是如何变为红色的;它可能是通过为
输入
元素设置CSS
样式
属性来实现的,在这种情况下,您可以尝试从元素中读取该属性。

只要编写下面的方法,并在需要检查元素是否可单击时调用它即可。同时传递所需的参数

public static boolean isClickable(WebElement el, WebDriver driver) 
    {
        try{
            WebDriverWait wait = new WebDriverWait(driver, 6);
            wait.until(ExpectedConditions.elementToBeClickable(el));
            return true;
        }
        catch (Exception e){
            return false;
        }
    }

仅供参考,“clickable”指的是selenium语言中的可见性和可用性。一个被禁用的按钮仍然是可点击的,从某种意义上说,它将注册鼠标点击,即使它不会启动任何操作。正如答案所示,您的问题实际上是关于是否启用了已知的现有可见元素。您的问题仍然是可以理解的,并且是有效的,这些定义将帮助您自己搜索非常简单的答案,将来:)我能够获得maxlength属性。谢谢你的建议。但是如何验证textbox不接受超过maxlength的字符。当我使用driver.findelement(By.xpath(“xpath\u值”)).length()时,它给出的输入字符串的总长度大于maxlength,测试用例失败。您可能是指
driver.findelement(By.xpath(“xpath\u值”)).getText().length()
。但是,我建议读取
maxlength
属性的目的是,一旦知道该值,即文本框将接受的字符数。现在我没有测试浏览器是否尊重
maxlength
属性,但我肯定认为是这样,这意味着我相信如果我读取的
maxlength
是100,那么文本框将不会接受超过100个字符。您是否需要测试该字段是否设置为接受最多N个字符,或者它是否实际遵守该设置?