无法使用 Java 在 Selenium WebDriver 中定位/填充文本框

Posted

技术标签:

【中文标题】无法使用 Java 在 Selenium WebDriver 中定位/填充文本框【英文标题】:Unable to locate/populate Text box in Selenium WebDriver with Java 【发布时间】:2019-07-15 20:17:36 【问题描述】:

<TD class=CuteEditorFrameContainer style="PADDING-BOTTOM: 2px; PADDING-TOP: 1px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px"  colSpan=2>
<IFRAME id=obj_oOpera class=CuteEdit style="BORDER-TOP: #c0c0c0 1px solid; HEIGHT: 100%; BORDER-RIGHT: #c0c0c0 1px solid; WIDTH: 100%; BORDER-BOTTOM: #c0c0c0 1px solid; BORDER-LEFT: #c0c0c0 1px solid; BACKGROUND-COLOR: white"  frameBorder=0>
<html>
<HEAD>
<STYLE>BODY 
	PADDING-BOTTOM: 0px; PADDING-TOP: 0px; PADDING-LEFT: 0px; MARGIN: 0px; PADDING-RIGHT: 0px

</STYLE>
</HEAD>
<BODY contentEditable=true>
</BODY>
</HTML>
</IFRAME>
<INPUT id=oOpera type=hidden name=oOpera>
</TD>

问题 我正在尝试填充评论框,但由于以下问题而无法填充

-- 检查框将我带到没有属性的代码 - BODY contentEditable=true

javascriptExecutor jse = (JavascriptExecutor)驱动程序; jse.executeScript("document.getElementsByName('obj_oOpera')[0].setAttribute('type', 'text');"); driver.findElement(By.xpath("//iframe[@id='obj_oOpera']")).clear(); driver.findElement(By.xpath("//iframe[@id='obj_oOpera']")).sendKeys("Opera");

-- 当我使用 IFRAME 或 INPUT 标记中的属性时抛出异常 元素不得隐藏/只读或禁用

其他无效的方法 框架的变化。 Java 脚本和 通常发送密钥

PS - 我可以在文本框中添加文本

【问题讨论】:

【参考方案1】:

您正在尝试在 input 中输入一个值,但您正在传递 iframe 的 id。只需将其替换为输入 id 即可解决您的问题。

JavascriptExecutor jse = (JavascriptExecutor)driver; 
jse.executeScript("document.getElementsByName('oOpera')[0].setAttribute('type', 'text');"); 
driver.findElement(By.xpath("//input[@id='oOpera']")).clear(); 
driver.findElement(By.xpath("//input[@id='oOpera']")).sendKeys("Opera");

此外,您的输入字段位于 Iframe 之外,而 Iframe 内的正文中没有元素,这就是它显示空正文的原因。

【讨论】:

完美的解决方案,但我怀疑 idname 是否是唯一的。无论提供什么前提,这个解决方案都应该是 OP。 感谢 Waqar 的回复,但我收到错误消息 - 线程“main”中的异常 org.openqa.selenium.InvalidElementStateException:元素不得为只读或禁用

以上是关于无法使用 Java 在 Selenium WebDriver 中定位/填充文本框的主要内容,如果未能解决你的问题,请参考以下文章

Selenium eclipse 配置与 Webdriver 2 和 Selenium Java 客户端驱动程序

如何让 Selenium firefox 驱动只截取浏览过的页面

如何在 Selenium Webdriver 3 中为 Firefox 驱动程序设置默认配置文件?

如何在 selenium python 中按 Enter 键?

selenium 常用api

Selenium 验证 div 是不是有滚动条