Java 使用Selenium Web驱动程序时无法找到提交

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

我正在尝试在我的一个struts2应用程序中为登录表单实现selenium测试。登录表单有两个文本字段(用户名和密码)和一个提交按钮,如下所示

<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"}