Java 使用Selenium Web驱动程序时无法找到提交
我正在尝试在我的一个struts2应用程序中为登录表单实现selenium测试。登录表单有两个文本字段(用户名和密码)和一个提交按钮,如下所示Java 使用Selenium Web驱动程序时无法找到提交,java,selenium,struts2,junit,Java,Selenium,Struts2,Junit,我正在尝试在我的一个struts2应用程序中为登录表单实现selenium测试。登录表单有两个文本字段(用户名和密码)和一个提交按钮,如下所示 <tr> <td><s:submit value="Login" /></td> </tr> } selenium测试失败,并显示以下消息 org.openqa.selenium.NoSuchElementException: Unable to locate element: {"metho
<tr>
<td><s:submit value="Login" /></td>
</tr>
}
selenium测试失败,并显示以下消息
org.openqa.selenium.NoSuchElementException: Unable to locate element: {"method":"id","selector":"Login"}
请让我知道需要做什么
谢谢
编辑
我也按照您的方式提供了id和名称,但无法获得结果。它会引发相同的错误。此外,我知道我上面的代码是错误的(当没有提供选择器时),但我需要知道正确的方法是什么。请参阅我下面的代码
包装主页
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>
根据您正在使用的Struts2主题,将以类似
要使其工作,只需给它一个ID:
注意:您也可以在注释代码中使用name
属性,但这也会将按钮的值发布到操作中,这通常是不需要的(例如,除非您需要区分在具有多个提交按钮的表单中按下了哪个按钮)。
因为ID更干净,所以可以这样做。您可以使用以下脚本:
findElement(By.xpath(“/html/body/div/div/div[2]/form/table[2]/tbody/tr/td/table/tbody/tr[6]”) 如果您使用FireFox作为浏览器,请安装Selenium IDE插件,然后您可以手动逐步完成该过程,查看Selenium如何识别您的登录按钮。我在该页面上没有看到id为“提交”的元素。我看到一个具有复杂ID的登录按钮。那么这个“提交”ID来自哪里?在我看来,Selenium出于正确的原因抛出了一个异常。元素根本不存在。这很明显,不是吗?检查HTML。是否有ID为“登录”的内容?不,就像错误所说的。你能试一下吗?
<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"}