不可见元素被检测为由Selenium WebDriver(Java)显示

不可见元素被检测为由Selenium WebDriver(Java)显示,java,html,selenium,selenium-webdriver,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="system

我有以下包含表单的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”))。显示了
启用了
,还有一些其他选项-无法通过我的代码来区分是否显示了表单

这里怎么了,有什么诀窍

driver.findElement(By.id("signUpForm")).isDisplayed();
绝对是定义元素是否可见的最可靠、最真实的方法

请注意,
isDisplayed()
背后有一个相当复杂的逻辑,请参阅:

在多个“显示”指示器中,有:

如果显示样式属性的计算值为“无”,则返回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")));

理论上你是对的,但实际上它在这里不起作用。我不知道为什么。这正是问题所在。正如我在问题中提到的,当表单隐藏时,
style=“display:none;”“
会显示在代码中。但是当表单显示时,代码中根本没有提到
style
。@Eliyahu首先,检查是否正常:您确定有一个
Form
元素包含
id=“signUpForm”
?@Eliyahu可能是
style
没有明确设置,而是经过计算的。@Eliyahu谢谢,这是一个公共网站,你可以分享它的链接吗?