0

我正在尝试使用 Selenium 获取 WebElement:

driver.findElement(By.xpath("//input[@name='j_username']"))

但是 Selenium 说:“无法使用 XPath 找到元素......”。XPath 是有效的,我用 FirePath 对其进行了验证。但输入元素有以下无效代码:

<input size="10" type="text" name="j_username" maxlength="8">

我无法更改 html 文件,尽管事实上是否有任何解决方案可以获取 webElement?提前致谢!

4

3 回答 3

1

尝试使用 css 选择器选择元素。并在firepath中验证(firebug插件该元素位置正确)。所以你的css选择器就像

input[name='j_username']

第二种方法是使用内部 firebug 机制来查找元素的 xPath。请参阅下面的屏幕 在此处输入图像描述

在这些操作之后,驱动程序应该正确处理元素。

于 2012-09-27T22:58:30.103 回答
0

最好的解决方案是找出 selenium 做错了什么,但是没有 URL 或示例页面来测试它有点困难。无论如何,您可以将 HTML 转储到jsfiddle 中吗?如果有这样做并将网址粘贴到问题中,我相信有人可以找到解决方案。

但是,如果不是,另一种获得结果的方法是使用 jQuery。如果萤火虫正在拾取它而不是硒,那么 jQuery 没有理由不得到它。如果需要,以下是如何执行此操作:

第 1 步:页面上是否已经存在 jQuery?如果是这样,那么您不需要执行此操作,否则您需要自己添加它,方法是使用driver.executeScript(addjQueryScript)脚本执行类似操作的位置。

第 2 步:调用WebElement input = driver.executeScript(elementSelector);elementSelector 脚本类似于\"return $('input[name=\"j_username\"]')\");

我的 jQuery 不太好,但我相信它应该可以工作......

祝你好运!

于 2012-10-05T13:40:33.597 回答
0

好吧,我建议在您的 html 代码中添加一个 id -

<input id="j_username"size="10" type="text" name="j_username" maxlength="8">

并按 id 查找元素 -

driver.findElement(By.id("j_username"));

我在 xpath(borwser 问题??)方面遇到过类似的问题,但 id 对我来说从来没有失败过。;)

顺便说一句,我觉得你的代码应该是 -

driver.findElement(By.xpath(".//*[@name='j_username']"));
于 2012-10-01T11:09:36.050 回答