java - 如何检查表单是否可见(WebDriver)?

标签 java selenium webdriver

我有两种形式:

<form action="" method="post" name="form1" id="form1" target="_self">
///
</form>

<style>
form#form2 {
    display: none;
}
</style>
<form action="" method="get" name="form2" id="form2" target="_blank">
////
</form>

我有以下代码:

WebDriver driver = new HtmlUnitDriver();
List<WebElement> forms = driver.findElements(By.cssSelector("form"));
for (WebElement form : forms) { 
   if (!form.isDisplayed()) break;
   System.out.print(form.ToString() + "\n");
}

在控制台中,我看到:

<form action="" method="post" name="form1" id="form1" target="_self">
<form action="" method="get" name="form2" id="form2" target="_blank">

如何检查表单是否不可见?

问题的解决方案。

WebDriver driver = new HtmlUnitDriver(**true**);

最佳答案

您有从开发工具获取的真实渲染的html吗?如果有,可以粘贴吗?

尝试一下,代码未测试,想法是如果selenium认为所有表单都显示,那么我们应该尝试获取表单的css值或style属性值,看看它们实际上是如何渲染的。 (我怀疑你所做的 selenium 部分是正确的,但 html 样式是错误的。)

// following your logic
WebDriver driver = new HtmlUnitDriver();
List<WebElement> forms = driver.findElements(By.cssSelector("form"));
for (WebElement form : forms) { 
   if (form.getCssValue("display") == "none") break;
   // or if (form.getAttribute("style").contains("display: none")) break;
   System.out.print(form.ToString() + "\n");
}

// a version showing more info
WebDriver driver = new HtmlUnitDriver();
List<WebElement> forms = driver.findElements(By.cssSelector("form"));
for (WebElement form : forms) {
   System.out.print(form.ToString() + "\n");
   System.out.print(form.isDisplayed() + "\n"); // how selenium determines
   System.out.print(form.getCssValue("display") + "\n"); // get css display value
   System.out.print(form.getAttribute("style") + "\n"); // get all style values if exists
   System.out.print("==================\n");
}

关于java - 如何检查表单是否可见(WebDriver)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16109971/

相关文章:

python - 如何在 Selenium for Python 中切换到新窗口?

selenium - PhantomJS 中的 webdriver 显示大小

java - 我们怎么能忽略Java中的一些SonarQube规则呢?

java - 如何在java中对包含两个以上异构对象的List进行排序?

java - 如何在 Java 中使用 Selenium 单击此链接

angularjs - 无法使用 Protractor 在 Angular JS 应用程序中查找元素

java - 如何在 selenium webdriver 中传递登录页面的无效测试数据?

javascript - 通过 WebDriver 的操作不会触发模糊事件

java - 最佳实践?将字符转换为字节

javascript - Java Http 服务器获取 Post 到 Ajax