java - 如何在 Java 中使用 HtmlUnit?

标签 java htmlunit

我正在尝试使用 Java 中的 HtmlUnit 登录网站。首先我输入用户名,然后输入密码。之后我需要从下拉框中选择一个选项。输入用户名和密码似乎有效,但是当我尝试从下拉框中选择项目时出现错误。谁能帮我解决这个问题?我的代码如下:

import com.gargoylesoftware.htmlunit.WebClient;
import com.gargoylesoftware.htmlunit.html.HtmlElement;
import com.gargoylesoftware.htmlunit.html.HtmlOption;
import com.gargoylesoftware.htmlunit.html.HtmlPage;
import com.gargoylesoftware.htmlunit.html.HtmlSelect;


public class homePage {
  public static void main(String[] args) throws Exception {

    final WebClient webClient = new WebClient();
    final HtmlPage page = webClient.getPage("website name here");
    HtmlElement usrname = page.getElementByName("username");
    usrname.click();
    usrname.type("myusername");
    HtmlElement psswrd = page.getElementByName("password");
    psswrd.click();
    psswrd.type("mypassword");
    HtmlSelect select = (HtmlSelect) page.getElementById("cmbProducts");
    HtmlOption option = select.getOptionByValue("ITDirect");
    select.setSelectedAttribute(option, true);
    HtmlElement signin = page.getElementByName("SignIn");
    signin.click();
    System.out.println(page.getTitleText());
    webClient.closeAllWindows();
  }
}

最佳答案

这是来自 HTMLunit 单元测试的代码。

final HtmlSelect select = form.getSelectsByName("select1").get(0);
final List<HtmlOption> expected = new ArrayList<HtmlOption>();
expected.add(select.getOptionByValue("option1"));
expected.add(select.getOptionByValue("option3"));

请注意,他们使用 getSelectsByName 而不是 getElementById。

这是这些单元测试的链接,因此您可以了解它们如何使用 API 进行规定。 http://htmlunit.sourceforge.net/xref-test/com/gargoylesoftware/htmlunit/html/HtmlSelectTest.html

关于java - 如何在 Java 中使用 HtmlUnit?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4869426/

相关文章:

java - ResultSet update{ColumnType} 方法容易受到 SQL 注入(inject)的攻击吗?

java - RMI:将两个远程对象绑定(bind)到同一注册表时抛出 ClassNotFoundException

java - 使用 Java 更新 MongoDB 中的文档

java - 如何让selenium驱动htmlunit自动下载图像?

java - HtmlUnit 等待 ajax 响应

java - 纬度和经度 Java

java - 最佳编码方式

java - 如何在gargoylesoftware的webclient中获取websocket

java - 如何在 HtmlUnit 中过滤响应类型?

java - 如何在 HtmlUnit 测试用例中添加用户名/密码身份验证信息?