java使用htmlUnit处理动态html表单
背景
- 我正在使用htmlUnit模拟特定页面中的用户行为
- 我正在进入一个登录页面,需要输入用户凭据
问题:
我想填充细节的表单会动态变化,并推送新的输入字段,其值会随着插入的每个字符而变化
这个输入字段有几个事件监听器,据我从Chrome调试中发现,按键事件与我最相关,因为这最终生成了更新值
当页面“加载”时,我收到以下错误: [User1st]提取语言代码TypeError时出错:无法调用undefined的方法“getAttribute”
四,。c、 g.h.javascript。StreetErrorReporter:runtimeError:message=[指定了无效或非法的选择器(选择器:'*,:x'错误:无效的选择器:*:x)。]sourceName=https://???/jquery-1.10.2.min.js]line=[3]lineSource=[null]lineOffset=[0]
一些代码:
WebClient webClient = new WebClient(BrowserVersion.CHROME);
webClient.getOptions().setRedirectEnabled(true);
webClient.getOptions().setUseInsecureSSL(true);
webClient.getOptions().setJavaScriptEnabled(true);
webClient.setAjaxController(new NicelyResynchronizingAjaxController());
webClient.waitForBackgroundJavaScript(5000);
final HtmlPage page = webClient.getPage(WEBSITE_URL);
HtmlForm loginForm = page.getFormByName("login");
HtmlTextInput userIdField = loginForm.getInputByName("USERID");
HtmlPasswordInput passwordField = loginForm.getInputByName("USERPASSWORD");
userIdField.type("ID");
passwordField.setText("PASSWORD");
接下来我要做的就是迭代表单输入字段并查看它们的值
我如何确保所有相关的js代码都能被执行(如果有的话)
# 1 楼答案
我不确定这是否有帮助,但让脚本休眠对我来说是可行的。这可能给了加载所有js脚本的时间