Javascript 无法使用Selenium Webdriver访问Salesforce textarea
Selenium Webdriver在尝试访问textarea时抛出元素不可见且无法与错误交互 1.文本区域位于一个弹出窗口内,我可以通过switchTo访问该窗口。我可以访问窗口中除文本区域以外的所有其他元素 2.我找不到任何可见性:元素的隐藏标记 我尝试了sleep命令、JavaScriptExecutor和XPath。这是我正在使用的代码Javascript 无法使用Selenium Webdriver访问Salesforce textarea,javascript,html,selenium,selenium-webdriver,Javascript,Html,Selenium,Selenium Webdriver,Selenium Webdriver在尝试访问textarea时抛出元素不可见且无法与错误交互 1.文本区域位于一个弹出窗口内,我可以通过switchTo访问该窗口。我可以访问窗口中除文本区域以外的所有其他元素 2.我找不到任何可见性:元素的隐藏标记 我尝试了sleep命令、JavaScriptExecutor和XPath。这是我正在使用的代码 Set<String> handler = driver.getWindowHandles(); // get all window han
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");
如何解决此错误?问题是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);
}
尝试先使用WebDriverWait等待文本区域的可见性,如下所示:WebDriverWait wait=new WebDriverWaitdriver,30;wait.untilExpectedConditions.visibilityOfElementLocatedBy.xpath//div[@class='CodeMirror']/div/textarea;我尝试了WebDriverWait一分钟,但仍然无法访问元素。请提供弹出窗口的快照,其中包含您要填充的文本区域?