java - 不可见元素被 Selenium WebDriver、Java 检测为 isDisplayed

标签 java html selenium selenium-webdriver

我有以下包含表单的 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")).isDisplayedisEnabled 和其他一些选项 - 永远无法通过我的代码区分是表单呈现还是不是。

这里出了什么问题,有什么技巧吗?

最佳答案

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/

相关文章:

java - 多次删除操作不起作用

javascript - 当到达页面顶部时,JQuery 将文本元素添加到 Nav

javascript - Google 文档闪烁光标 "kix-cursor-caret"

javascript - React 样式组件无法识别视频标签的 HTML 属性 'autoplay'

java - WebElements 列表中的相对 Xpath

java - 如何在没有ide的情况下运行Selenium+Java+Cucumber

python - 将找不到的元素设置为 Null/Empty 而不是跳过它们

java - JodaTime 不会在不匹配的星期几和月份失败

java - 从网页下载java小程序

java - 如何使 String 类可迭代?可能的?