我有以下包含表单的HTML代码:
<div id="bodyLeftBlock" class="">
<form id="signUpForm" class="" method="post" action="/en/signup/post/" novalidate="novalidate" style="display: none;">
<input class="" type="hidden" value="am" name="systemsShortCutName">
<label class="inputTitle translate" translatekey="NAME">Name</label>
....
....
有时表单会显示在页面上,在这种情况下style="display: none;"
不会显示在页面代码上。
隐藏表单时,代码中会出现style="display: none;"
。
我需要区分的是表格与否。
尝试了driver.findElement(By.id("signUpForm")).isDisplayed
,isEnabled
以及更多选项 - 我的代码永远无法区分是否提供了表单。
这里有什么问题,诀窍是什么?
答案 0 :(得分:2)
driver.findElement(By.id("signUpForm")).isDisplayed();
绝对是定义元素是否可见的最可靠和真实的方式。
请注意,isDisplayed()
背后有一个非常复杂的逻辑,请参阅:Element Displayedness。
在多个“显示性”指标中,有:
如果显示样式属性的计算值为“none”,则返回false。
您也可以尝试等待form
变为可见:
WebDriverWait wait = new WebDriverWait(driver, 5);
wait.until(ExpectedConditions.visibilityOfElementLocated(By.id("signUpForm")));
或,隐形:
WebDriverWait wait = new WebDriverWait(driver, 5);
wait.until(ExpectedConditions.invisibilityOfElementLocated(By.id("signUpForm")));