Javascript 如何使用SeleniumWebDriver与隐藏的元素交互?

Javascript 如何使用SeleniumWebDriver与隐藏的元素交互?,javascript,jquery,selenium,selenium-webdriver,Javascript,Jquery,Selenium,Selenium Webdriver,元素属性:- <textarea id="txtSuffixTitle" class="form-control" tabindex="3" rows="2" placeholder="Suffix Title" name="txtSuffixTitle" maxlength="50" cols="20" style="display: none; visibility: hidden;">Suffix Title </textarea> driver.findEle

元素属性:-

 <textarea id="txtSuffixTitle" class="form-control" tabindex="3" rows="2" placeholder="Suffix Title" name="txtSuffixTitle" maxlength="50" cols="20" style="display: none; visibility: hidden;">Suffix Title </textarea>
driver.findElement(By.id("txtSuffixTitle")).clear();
driver.findElement(By.id("txtSuffixTitle")).sendKeys("Mr.");
错误:-

 <textarea id="txtSuffixTitle" class="form-control" tabindex="3" rows="2" placeholder="Suffix Title" name="txtSuffixTitle" maxlength="50" cols="20" style="display: none; visibility: hidden;">Suffix Title </textarea>
driver.findElement(By.id("txtSuffixTitle")).clear();
driver.findElement(By.id("txtSuffixTitle")).sendKeys("Mr.");
元素不能隐藏、禁用或只读

我在一篇文章中找到了下面的解决方案。我可以用它与元素交互,但它破坏了UI

WebElement elem = driver.findElement(By.id("txtSuffixTitle"));
String js = "arguments[0].style.display='inline'; arguments[0].style.visibility='visible';";
((JavascriptExecutor) driver).executeScript(js, elem);

有人能推荐一下吗?我可以手动键入,但由于style属性,即style=“display:none;visibility:hidden;automation无法交互。

如果元素是隐藏的,则无法通过selenium进行交互。但是使用javascript执行器,您应该能够执行以下操作:

((JavascriptExecutor)driver).executeScript("document.getElementById('txtSuffixTitle').innerText = 'Mr.'");

希望这会有所帮助。

隐藏的事实是否表明您的测试应该导航文档并执行必要的验证,以使该元素可见?这里不涉及验证。开发团队有意添加此代码以修复IE9中的一些拼写检查问题。如果用户不能这样做,Selenium也不会能够做到这一点。在测试中做一些用户不能做的事情有什么意义?你可以使用一些Javascript黑客来做,但更好的是,你应该重新访问你的测试。文本区域没有隐藏。我可以手动键入它,但style属性为style=“display:none;可见性:隐藏;&因此,自动化无法键入。虽然此代码通过了测试,但使用innerText无法在这些文本框中输入值。您确定吗?文本区域已隐藏。文本区域未隐藏。我可以手动键入,但style属性为style=“display:none;visibility:hidden;我认为由于这种自动化,无法与该元素交互。