使用Selenium选择无效的html-tag

时间:2012-09-27 14:14:51

标签: java selenium selenium-webdriver

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

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

但Selenium说:"无法使用XPath找到元素......"。 XPath是有效的,我用FirePath证明了它。 但是input元素具有以下无效代码:

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

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

3 个答案:

答案 0 :(得分:1)

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

input[name='j_username']

第二种方法是使用内部firebug机制来查找元素的xPath。 见下面的屏幕 enter image description here

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

答案 1 :(得分:0)

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

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

和id -

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

我遇到过与xpath类似的问题(borwser问题??)但我的ID永远不会失败。 ;)

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

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

答案 2 :(得分:0)

最好的解决方案是找出哪些硒做错了,但没有一个URL或样本页面来测试它有点困难。无论如何你可以将HTML转储到jsfiddle吗?如果有这样做并将网址粘贴到问题中,我确信有人可以找到解决方案。

如果没有,另一种获得结果的方法是使用jQuery。如果firebug正在捡起它而不是硒,那么jQuery就没有理由不接受它。如果需要,这是如何做到这一点:

第1步:页面上是否已存在jQuery?如果是这样,那么您不需要这样做,否则您需要使用脚本does something like this中的driver.executeScript(addjQueryScript)自行添加。

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

我的jQuery不太好,但我相信这应该有用......

祝你好运!