我有以下包含表单的 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
和其他一些选项 - 永远无法通过我的代码区分是表单呈现还是不是。
这里出了什么问题,有什么技巧吗?
最佳答案
driver.findElement(By.id("signUpForm")).isDisplayed();
绝对是定义元素是否可见的最可靠、最真实的方法。
请注意,isDisplayed()
背后有一个相当复杂的逻辑,请参阅:Element Displayedness .
多个“显示度”指标中,有:
<小时/>If the computed value of the display style property is "none", return false.
您还可以尝试等待表单
变得可见:
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")));
关于java - 不可见元素被 Selenium WebDriver、Java 检测为 isDisplayed,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30742972/