在尝试使用HTMLUnit保存html文本框元素时键入强制转换异常

时间:2015-05-22 20:51:14

标签: java htmlunit

我一直在尝试创建一个Java类来对网站进行测试,但是我尝试使用HTMLUnit API在网站中输入用户名和密码时遇到了麻烦。以下是我试图建立代码的html部分:

  

            <div class="inner_contain">

                <table cellpadding="2" cellspacing="1" border="0" align="center">
                    <tr>
                        <form name="frm1" action="blank" onSubmit="defaultSubmit(); return false;" method="post">
                            <Td align="right"><strong>Username:</strong></Td>
                            <td><input type="text" maxlength="20" class="login_input" /></td>
                        </form>
                    </tr>

                    <tr>
                        <form name="frm2" action="blank" onSubmit="defaultSubmit(); return false;" method="post">
                            <Td align="right"><strong>Password:</strong></Td>
                            <td><input type="password" maxlength="20"
                                class="login_input" /></td>
                        </form>
                    </tr>

                    <tr>
                        <td colspan="2" align="center"><input type="button" value="Login" class="submit" onclick="javascript:LoginSubmit('Login')" /></td>
                    </tr>
                </table>

            </div>

以下是该部分的代码段:

  

final HtmlForm usernameForm = page.getElementByName(&#34; frm1&#34;);

     

final HtmlTextInput usernameInput =(HtmlTextInput)usernameForm.getByXPath(&#34; //输入[@class =&#39; login_input&#39;和@type =&#39; text&#39;]&#34; );

但无论有没有HtmlTextInput投射,我仍然会收到错误:

  

java.util.ArrayList无法强制转换为com.gargoylesoftware.htmlunit.html.HtmlTextInput

非常感谢能够提交用户凭据的任何帮助!

1 个答案:

答案 0 :(得分:1)

您只需阅读the API doc

public List<?> getByXPath(String xpathExpr)
     

从此节点计算指定的XPath表达式,返回匹配的元素

请注意返回类型和复数形式的用法。如果要获取单个元素,则获取返回列表的第一个元素,或使用getFirstByXPath()

public <X> X getFirstByXPath(String xpathExpr)
     

从此节点计算指定的XPath表达式,返回第一个匹配元素;如果没有节点与指定的XPath表达式匹配,则返回null。

阅读文档时,一切都要简单得多。