[英]Selenium : How to enter text in div inside an iframe
HTML代碼:
<div class="listRte__editorFrame">
<iframe src="about:blank" style="height: 150px;">
#document
<html>
<head>
<body>
<button class="__clipped">
<div data-ghosttext="Add a detailed description here." contenteditable="true">
::after
</div>
</button>
</body>
</head>
</html>
</iframe>
</div>
我想在div中輸入文本。 手動添加文本后的HTML:
<div contenteditable="true">abcd</div>
我試圖使用javascript輸入文本:
JavascriptExecutor jse = (JavascriptExecutor)driver;
jse.executeScript("document.evaluate('//div[@data-ghosttext=\"Add a detailed description here.\"]', document, null, 9, null).singleNodeValue.innerHTML="+ "\"abc\"");
但這給了我錯誤:
org.openqa.selenium.JavascriptException:TypeError:document.evaluate(...)。singleNodeValue為null
我也嘗試過切換到iframe,但是在切換到iframe時無法識別div。 另外,當我嘗試執行以下命令時,我得到size=0
。 但是,當我檢查元素時,頁面上有3個iframe。
int size = driver.findElements(By.tagName("iframe")).size();
我可以在Java / js中獲得確切的命令嗎,可以使用它在div元素中鍵入一些內容。 我使用testng框架開發硒
但這給了我錯誤:org.openqa.selenium.JavascriptException:ReferenceError:未定義abcd
abcd
需要加引號
JavascriptExecutor jse = (JavascriptExecutor)driver;
jse.executeScript("document.evaluate('//html//body//div', document, null, 9, null).singleNodeValue.innerHTML="+ "'abcd'");
或轉義的雙引號
JavascriptExecutor jse = (JavascriptExecutor)driver;
jse.executeScript("document.evaluate('//html//body//div', document, null, 9, null).singleNodeValue.innerHTML="+ "\"abcd\"");
或者簡單地
jse.executeScript("document.querySelector( 'div' ).innerHTML = " + "'abcd'" );
您必須先切換到適當的frame
然后嘗試按以下方式在div
傳遞任何文本:
driver.switchTo().frame(driver.findElement(By.xpath("//div[@class='listRte__editorFrame']//following::iframe[1]")));
要獲取列表,請嘗試:
List<WebElement> listFrames = driver.findElements(By.tagName("iframe"));
System.out.println("list frames "+listFrames.size());
下一個切換到相框
driver.switchTo().frame(listFrames.get( frameIndex ));
然后嘗試輸入該文本。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.