java - 使用 Webdriver 在网页中查找输入标签,并 driver.findElements 抛出异常。为什么?

标签 java selenium xpath

我想使用 Selenium Webdriver 从网页中获取输入标签项。

这是 html 代码:

<tr>
    <td class="listLabel" height="24 px">Username:</td>
    <td class="listData">
        <input type="text" tabindex="1" name="username" size="30">
    </td>
</tr>
<tr>
    <td class="listLabel" height="24 px">Password:</td>
    <td class="listData">
        <input type="password" tabindex="2" name="password" size="30">
        <input type="submit" value=" Login " name="submit">
    </td>
</tr>

到目前为止我所做的是:

WebDriver driver = new FirefoxDriver();

driver.manage().window().maximize();

driver.get(adminURL);

List<WebElement> listElements = driver.findElements(By.xpath("//td[@class='listData']"));

System.out.println(listElements.size()); // gives the element size 2 which is valid.

for(WebElement el:listElements){
    el.findElement(By.xpath("//input[text()='username']")); //didnot find the element
}

System.out.println(" Title of the page is : "+driver.getTitle());

我正在使用 xpath 获取元素。但它没有获取具有输入类型和文本用户名的元素。

它抛出此异常:

Exception in thread "main" org.openqa.selenium.NoSuchElementException: Unable to locate element: {"method":"xpath","selector":"//input[text()='username']"}
Command duration or timeout: 113 milliseconds
For documentation on this error, please visit: http://seleniumhq.org/exceptions/no_such_element.html
Build info: version: '2.43.1', revision: '5163bce', time: '2014-09-10 16:27:58'
System info: host: 'DS-7071BC8FD7AA', ip: '10.112.94.126', os.name: 'Windows 7', os.arch: 'x86', os.version: '6.1', java.version: '1.7.0_60'
Session ID: c1b5d8b8-43db-4157-8ab6-32286116d89a
Driver info: org.openqa.selenium.firefox.FirefoxDriver
Capabilities [{platform=WINDOWS, databaseEnabled=true, cssSelectorsEnabled=true, javascriptEnabled=true, acceptSslCerts=true, handlesAlerts=true, browserName=firefox, webStorageEnabled=true, nativeEvents=true, rotatable=false, locationContextEnabled=true, applicationCacheEnabled=true, takesScreenshot=true, version=32.0.3}]
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
    at java.lang.reflect.Constructor.newInstance(Constructor.java:526)
    at org.openqa.selenium.remote.ErrorHandler.createThrowable(ErrorHandler.java:204)
    at org.openqa.selenium.remote.ErrorHandler.throwIfResponseFailed(ErrorHandler.java:156)
    at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:599)
    at org.openqa.selenium.remote.RemoteWebElement.execute(RemoteWebElement.java:268)
    at org.openqa.selenium.remote.RemoteWebElement.findElement(RemoteWebElement.java:171)
    at org.openqa.selenium.remote.RemoteWebElement.findElementByXPath(RemoteWebElement.java:244)
    at org.openqa.selenium.By$ByXPath.findElement(By.java:357)
    at org.openqa.selenium.remote.RemoteWebElement.findElement(RemoteWebElement.java:167)
    at com.test.selenese.SeleneseTest.main(SeleneseTest.java:35)
Caused by: org.openqa.selenium.NoSuchElementException: Unable to locate element: {"method":"xpath","selector":"//input[text()='username']"}
For documentation on this error, please visit: http://seleniumhq.org/exceptions/no_such_element.html
Build info: version: '2.43.1', revision: '5163bce', time: '2014-09-10 16:27:58'
System info: host: 'DS-7071BC8FD7AA', ip: '10.112.94.126', os.name: 'Windows 7', os.arch: 'x86', os.version: '6.1', java.version: '1.7.0_60'
Driver info: driver.version: unknown
    at <anonymous class>.FirefoxDriver.prototype.findElementInternal_(file:///C:/Users/rajan.v/AppData/Local/Temp/anonymous2185375942107103130webdriver-profile/extensions/fxdriver@googlecode.com/components/driver-component.js:9618:133)
    at <anonymous class>.FirefoxDriver.prototype.findChildElement(file:///C:/Users/rajan.v/AppData/Local/Temp/anonymous2185375942107103130webdriver-profile/extensions/fxdriver@googlecode.com/components/driver-component.js:9630:3)
    at <anonymous class>.DelayedCommand.prototype.executeInternal_/h(file:///C:/Users/rajan.v/AppData/Local/Temp/anonymous2185375942107103130webdriver-profile/extensions/fxdriver@googlecode.com/components/command-processor.js:11612:16)
    at <anonymous class>.DelayedCommand.prototype.executeInternal_(file:///C:/Users/rajan.v/AppData/Local/Temp/anonymous2185375942107103130webdriver-profile/extensions/fxdriver@googlecode.com/components/command-processor.js:11617:7)
    at <anonymous class>.DelayedCommand.prototype.execute/<(file:///C:/Users/rajan.v/AppData/Local/Temp/anonymous2185375942107103130webdriver-profile/extensions/fxdriver@googlecode.com/components/command-processor.js:11559:5)

支持我以正确的方式做这件事。提前致谢。

最佳答案

试试这个方法:

el.findElement(By.xpath(".//input[@name='username']"));
  1. 添加前导 . 以告知 XPath 相对于当前 el 元素。

  2. 您尝试按属性而不是内部文本过滤元素,因此请将 text() 替换为 @attribute-name

    <

关于java - 使用 Webdriver 在网页中查找输入标签,并 driver.findElements 抛出异常。为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26254465/

相关文章:

java - 面板内命令按钮的问题

java - Java 中的 SAX 解析器和 XML 转换器有什么区别?

java - 将一个数组的每个元素乘以另一个数组的每个元素并对新的非常大的数组进行排序

maven - 机器人框架,使用命令行标志打开浏览器以保存浏览器日志

html - 为什么在选择之前 XPath 否定无法正常工作?

java - Hibernate 坚持 vs 保存

python - 按值查找元素 Selenium/Python

Python 爬虫找不到特定的 Xpath

java - 如何以最少的等待时间加速 Java Selenium Script

xml - 使用 xpath 包含忽略重音符号