单击“登录按钮”不适用于Selenium Java代码

时间:2014-07-10 07:01:18

标签: java button selenium login automation

尝试自动化登录页面。该按钮的HTML如下:

button class="btn loginBtn " style="" tabindex="3" type="submit">Login</button

Java代码:

WebDriver wd = new FirefoxDriver();
wd.findElement(By.id("btn loginBtn")).click();

但这引发了以下错误。

错误:

Exception in thread "main" org.openqa.selenium.NoSuchElementException: Unable to locate element: {"method":"id","selector":"btn loginBtn"}
Command duration or timeout: 14 milliseconds
For documentation on this error, please visit: http://seleniumhq.org/exceptions/no_such_element.html
Build info: version: '2.42.2', revision: '6a6995d', time: '2014-06-03 17:42:30'
System info: host: 'techteam-PC', ip: '192.168.10.150', os.name: 'Windows 7', os.arch: 'amd64', os.version: '6.1', java.version: '1.6.0_23'
Session ID: 8b0100ab-bb50-469c-ada6-ad9f9c21d525
Driver info: org.openqa.selenium.firefox.FirefoxDriver
Capabilities [{platform=XP, acceptSslCerts=true, javascriptEnabled=true, browserName=firefox, rotatable=false, locationContextEnabled=true, version=30.0, cssSelectorsEnabled=true, databaseEnabled=true, handlesAlerts=true, browserConnectionEnabled=true, nativeEvents=false, webStorageEnabled=true, applicationCacheEnabled=true, takesScreenshot=true}]
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
    at java.lang.reflect.Constructor.newInstance(Unknown Source)
    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.RemoteWebDriver.findElement(RemoteWebDriver.java:352)
    at org.openqa.selenium.remote.RemoteWebDriver.findElementById(RemoteWebDriver.java:393)
    at org.openqa.selenium.By$ById.findElement(By.java:214)
    at org.openqa.selenium.remote.RemoteWebDriver.findElement(RemoteWebDriver.java:344)
    at AutoStaging.main(AutoStaging.java:24)
Caused by: org.openqa.selenium.remote.ErrorHandler$UnknownServerException: Unable to locate element: {"method":"id","selector":"btn loginBtn"}
Build info: version: '2.42.2', revision: '6a6995d', time: '2014-06-03 17:42:30'
System info: host: 'techteam-PC', ip: '192.168.10.150', os.name: 'Windows 7', os.arch: 'amd64', os.version: '6.1', java.version: '1.6.0_23'
Driver info: driver.version: unknown
    at <anonymous class>.FirefoxDriver.prototype.findElementInternal_(file:///C:/Users/techteam/AppData/Local/Temp/anonymous8022566380795403314webdriver-profile/extensions/fxdriver@googlecode.com/components/driver_component.js:9470:7)
    at <anonymous class>.FirefoxDriver.prototype.findElement(file:///C:/Users/techteam/AppData/Local/Temp/anonymous8022566380795403314webdriver-profile/extensions/fxdriver@googlecode.com/components/driver_component.js:9479:3)
    at <anonymous class>.DelayedCommand.prototype.executeInternal_/h(file:///C:/Users/techteam/AppData/Local/Temp/anonymous8022566380795403314webdriver-profile/extensions/fxdriver@googlecode.com/components/command_processor.js:11455:11)
    at <anonymous class>.DelayedCommand.prototype.executeInternal_(file:///C:/Users/techteam/AppData/Local/Temp/anonymous8022566380795403314webdriver-profile/extensions/fxdriver@googlecode.com/components/command_processor.js:11460:7)
    at <anonymous class>.DelayedCommand.prototype.execute/<(file:///C:/Users/techteam/AppData/Local/Temp/anonymous8022566380795403314webdriver-profile/extensions/fxdriver@googlecode.com/components/command_processor.js:11402:5)

2 个答案:

答案 0 :(得分:3)

您的按钮的课程loginBtn不是loginBtn 试试wd.findElement(By.xpath("//button[contains(@class, 'loginBtn')]")).click();

答案 1 :(得分:0)

不是搜索所有Web元素的id,而是使用firefix中的firebug add on工具并为其获取xPath。然后您可以使用以下代码:

wd.findElement(By.xPath("yourXpathUsingFirebug")).click();