Selenium:使用 xpath 在 div 中输入文本

Posted

技术标签:

【中文标题】Selenium:使用 xpath 在 div 中输入文本【英文标题】:Selenium : Enter the text in div using xpath 【发布时间】:2014-07-09 16:00:20 【问题描述】:

在 selenium for inputbox 中,我们可以输入如下值:

WebElement inputBox = driver.findElement(By.xpath(xpath)));
inputBox.sendKeys("abc");

但是在 1 个网页上,我有一个按钮,点击后获得一个我必须通过 selenium 进入的 div,我正在获取该 div 的 xpath,例如

WebElement inputDiv = driver.findElement(By.xpath("//div[contains(@class,'x-grid3-cell-inner')]"));
inputDiv.sendKeys("abc");           //This is not working

使用 xpath,我得到了 div,但是如何使用它的 xpath 在其中输入文本?

手动添加文本后的html

<div class="x-grid3-cell-inner">ty</div>

我必须在其中输入文本的 div 是:

<div class="x-grid3-cell-inner" />

【问题讨论】:

您需要为该文本输入提供完整的 html。有时您需要处理 div 包含的输入。 没有输入框,我要直接在div里输入。并使用 sendKeys 我无法 你能提供你定位的html吗?提供的信息很难提供帮助。 更新了问题,你现在可以看看这个吗? 【参考方案1】:

您可以使用 javascript 更新 DIV 文本

JavascriptExecutor js = (JavascriptExecutor) driver;
js.executeScript("document.getElementById('Div_Id').innerHTML="+ DesiredText);

在 JavaScript 中使用 XPATH

JavascriptExecutor js = (JavascriptExecutor) driver;
js.executeScript("document.evaluate(xpathExpresion, document, null, 9, null).singleNodeValue.innerHTML="+ DesiredText);

Reference

【讨论】:

使用 xpath 的任何选项。我只能为此使用 xpath。因为 id 是自动生成的。 请注意,您拥有的 XPath JS 解决方案在 中不起作用 那么还有其他解决方案吗? @iRunner 你用的是哪个浏览器? 目前是 Firefox。但可能必须使用 IE 自动化。【参考方案2】:

您无法使用发送键编辑此 div,因为它没有要发送的输入。相反,请尝试编辑 div 的文本字段。

【讨论】:

有什么建议吗?【参考方案3】:

Sendkeys 用于输入带有标签名称'input'的输入字段 你不能在这里使用 sendkeys

您将不得不使用 JavascriptExecutor 来执行此操作

JavascriptExecutor js = (JavascriptExecutor) driver;
js.executeScript("document.getElementById('Div_Id').innerHTML="+ DesiredText);

【讨论】:

以上是关于Selenium:使用 xpath 在 div 中输入文本的主要内容,如果未能解决你的问题,请参考以下文章

selenium python 通过Xpath定位取出页面元素

Selenium:是不是可以将 xpath 与变量连接起来?

使用python处理selenium中的xpath定位元素的模糊匹配问题

selenium使用Xpath定位之完整篇

Selenium 和 xpath:找到一个带有类/ID 的 div 并验证里面的文本

selenium+xpath 文本信息定位