Selenium Webdriver抛出元素不可见,并且在尝试访问textarea时无法与错误进行交互
1.将textarea放在弹出窗口中,我可以通过switchTo()访问该窗口。我可以访问窗口中除textarea之外的所有其他元素。
2.我找不到该元素的任何“Visibility:hidden”标签。
我尝试了sleep命令,JavaScriptExecutor以及xpaths.This是我正在使用的代码。
Set<String> handler = driver.getWindowHandles(); // get all window handles
Iterator<String> iterators = handler.iterator();
while (iterators.hasNext()){
subWindowHandler = iterators.next();
}
System.out.println(subWindowHandler);
driver.switchTo().window(subWindowHandler);
thread.sleep(5000);
driver.findElement(By.xpath("//div[@class='CodeMirror'] /div/textarea")).sendKeys("hello");
如何解决此错误?
答案 0 :(得分:0)
问题是textarea的父元素高度为0。在我的代码中,我使用JavascriptExecutor来操作父元素的css,然后使用sendKeys方法。
整个代码如下所示:
jsEditorOperation("x[0].firstChild.style.height='1px';");
driver.findElement(By.xpath("//div[@class='CodeMirror']/div/textarea")).sendKeys(text);
jsEditorOperation("x[0].firstChild.style.height='0px'; ");
其中jsEditorOperation方法可用于访问CodeMirror javascript API,其代码为:
private Object jsEditorOperation(String code) {
String script = "var x=document.getElementsByClassName('CodeMirror');" + code;
JavascriptExecutor js = (JavascriptExecutor) DriverProvider.getInstance().getDriver();
return js.executeScript(script);
}