Java 使用Selenium选择无效的html标记
我正在尝试使用Selenium获取WebElement:Java 使用Selenium选择无效的html标记,java,selenium,selenium-webdriver,Java,Selenium,Selenium Webdriver,我正在尝试使用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文件,尽管有任
driver.findElement(By.xpath("//input[@name='j_username']"))
但是Selenium说:“无法找到带有XPath的元素…”。
XPath是有效的,我用FirePath进行了验证。
但输入元素具有以下无效代码:
<input size="10" type="text" name="j_username" maxlength="8">
我无法更改html文件,尽管有任何解决方案可以获取webElement吗?
提前谢谢 尝试使用css选择器选择元素。并在firepath(firebug插件)中验证元素是否正确定位。 所以你的css选择器应该是
input[name='j_username']
第二种方法是使用内部firebug机制来查找元素的XPath。
请参阅下面所附的屏幕
在这些操作之后,驱动程序应该正确地处理元素。我建议在html代码中添加一个id-
<input id="j_username"size="10" type="text" name="j_username" maxlength="8">
我在xpath方面也遇到过类似的问题(borwser问题??),但id对我来说从未失败过
顺便说一下,我觉得你的代码应该是-
driver.findElement(By.xpath(".//*[@name='j_username']"));
最好的解决方案是找出selenium做错了什么,但如果没有URL或示例页面进行测试,这有点困难。您是否可以将HTML转储到一个文件中?如果有人这样做,并粘贴到问题的网址,我相信有人可以找到一个解决办法 但是,如果不是这样,另一种获得结果的方法是使用jQuery。如果firebug正在获取它,但不是selenium,那么jQuery没有理由不获取它。如果需要的话,这里有一些方法: 步骤1:页面上是否已经存在jQuery?如果是这样,则不需要执行此位,否则需要使用
driver.executeScript(addjQueryScript)
在脚本所在位置添加它
第2步:调用WebElement input=driver.executeScript(elementSelector)代码>其中elementSelector脚本类似于\“return$('input[name=\'j\u username\'”)\”代码>
我的jQuery不是很好,但我相信它应该可以工作
祝你好运 如果您在Firebug中执行XPath查询(通过进入控制台,键入$x(“//input[@name='j_username'])
),它会找到什么吗?元素是否在弹出窗口或iframe中?开始时它在页面上是可见的还是某些操作导致它可见?如果我执行查询,控制台将响应:[input]。元素不在弹出窗口或iframe中。它一直可见。不,它不工作。我尝试了带有绝对路径的变体和带有css选择器的版本。FirePath和FireBug获取元素,但是selenium抛出了每个异常,它无法找到元素。我的问题之一是,我无法更改站点的HTML代码。我尝试了您的版本,但结果是一样的:XPath和Firebug没有问题,但是Selenium没有找到元素。同时,我认为硒没有解决方案:(谢谢你的帮助!
driver.findElement(By.xpath(".//*[@name='j_username']"));