我有两种形式:
<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/