有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java使用htmlUnit处理动态html表单

背景

  1. 我正在使用htmlUnit模拟特定页面中的用户行为
  2. 我正在进入一个登录页面,需要输入用户凭据

问题:

  1. 我想填充细节的表单会动态变化,并推送新的输入字段,其值会随着插入的每个字符而变化

  2. 这个输入字段有几个事件监听器,据我从Chrome调试中发现,按键事件与我最相关,因为这最终生成了更新值

  3. 当页面“加载”时,我收到以下错误: [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) 个答案

  1. # 1 楼答案

    我不确定这是否有帮助,但让脚本休眠对我来说是可行的。这可能给了加载所有js脚本的时间

    Thread.sleep(2000);