无法使用Selenium Webdriver访问Salesforce textarea

时间:2014-11-13 07:27:00

标签: javascript html selenium selenium-webdriver

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");

如何解决此错误?

1 个答案:

答案 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);

}