我正在尝试在我的一个struts2应用程序中为登录表单实现selenium测试。登录表单有2个textfield(用户名和密码)和一个提交按钮,如下所示
<tr>
<td><s:submit value="Login" /></td>
</tr>
硒测试类如下
package home_page;
import org.junit.Test;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.openqa.selenium.interactions.Actions;
public class OpenURL {
@Test
public void openSoftwareTesting(){
WebDriver _driver = new FirefoxDriver();
_driver.get("http://trackit.zensar.com/TrackIt/");
WebElement userName= _driver.findElement(By.name("userName"));
WebElement password= _driver.findElement(By.name("password"));
//WebElement submit= _driver.findElement(By.name("submit"));
Actions builder = new Actions(_driver);
Actions seriesOfActions = builder.moveToElement(userName).click().sendKeys(userName, "sm38553");
seriesOfActions.perform();
Actions action1 = builder.moveToElement(password).click().sendKeys(password, "Zensar#123");
action1.perform();
// _driver.findElement(By.name("submit")).click();
_driver.findElement(By.id("submit")).click();
}
}
硒测试失败,并显示以下消息
org.openqa.selenium.NoSuchElementException: Unable to locate element: {"method":"id","selector":"Login"}
请告诉我需要做什么。
由于
修改
我通过提供id和名称来做你的方式,但是无法得到结果。它抛出相同的错误。而且,我知道上面的代码是错误的(当没有提供选择器时),但我需要知道什么是正确的方法。请看我的代码如下 包home_page;
import org.junit.Test;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.openqa.selenium.interactions.Actions;
public class OpenURL {
@Test
public void openSoftwareTesting(){
WebDriver _driver = new FirefoxDriver();
_driver.get("http://trackit.zensar.com/TrackIt/");
WebElement userName= _driver.findElement(By.name("userName"));
WebElement password= _driver.findElement(By.name("password"));
//WebElement submit= _driver.findElement(By.name("submit"));
Actions builder = new Actions(_driver);
Actions seriesOfActions = builder.moveToElement(userName).click().sendKeys(userName, "sm38553");
seriesOfActions.perform();
Actions action1 = builder.moveToElement(password).click().sendKeys(password, "Zensar#123");
action1.perform();
// _driver.findElement(By.name("submit")).click();
_driver.findElement(By.id("submit")).click();
}
}
JSP代码
<tr>
<td><s:textfield name="userName" label="User Name" /></td>
</tr>
<tr>
<td><s:password name="password" label="Password" /></td>
</tr>
<tr>
<td><s:submit id="submit" value="Login" /></td>
</tr>
硒错误
org.openqa.selenium.NoSuchElementException: Unable to locate element: {"method":"id","selector":"submit"}
答案 0 :(得分:1)
<s:submit value="Login" />
会在HTML等
中生成 <input type="submit" value="Login" id="someGeneratedId" />
。
要使其有效,只需给它一个ID:
<s:submit value="Login" id="submit" />
<子>
注意:您也可以使用name
属性,就像在注释代码中一样,但这也会将按钮的值发布到操作中,这通常是不受欢迎的(例如,除非您需要区分按下了哪个按钮)在具有多个提交按钮的表单中)。
由于ID更干净,所以就这样。
答案 1 :(得分:0)
您可以使用以下脚本:
driver.findElement(By.xpath( “/ HTML /体/ DIV / DIV / DIV [2] /形式/表[2] / tbody的/ TR / TD /表/ tbody的/ TR [6]”)) .submit();
答案 2 :(得分:0)
如果您使用FireFox作为浏览器安装Selenium IDE插件http://docs.seleniumhq.org/docs/02_selenium_ide.jsp,那么您可以手动逐步完成该过程以查看Selenium如何识别您的登录按钮。