java - 如何使用 java 中的 HtmlUnit 从 HTML 中不在 Form 元素中的 textarea 复制数据?

标签 java htmlunit

我正在使用 https://www.base64decode.org/在 java 中使用 htmlunit 解码编码文本。

这是网站的html代码

  <form name="convert_text" method="post" action="/">
    <textarea name="input" placeholder="Type (or paste) here..."></textarea>
    <button type="submit" name="decode" value="decode"><i class="fa fa-chevron-left"></i>DECODE<i class="fa fa-chevron-right"></i></button>
    <select name="charset"><option value="UTF-8">UTF-8</option><option value="ASCII">ASCII</option><option value="CP1256">CP1256</option><option value="ISO-8859-1">ISO-8859-1</option><option value="ISO-8859-2">ISO-8859-2</option><option value="ISO-8859-6">ISO-8859-6</option><option value="ISO-8859-15">ISO-8859-15</option><option value="Windows-1252">Windows-1252</option></select>
    <span>You may also select input charset.</span>
    <div class="clear"></div>
  </form>
  <textarea name="output" placeholder="Result goes here..."></textarea>

这是我的 Decode.java 代码

    public class Decode {
public static void de(String str){
    WebClient webClient = new WebClient(BrowserVersion.CHROME);
    webClient.getOptions().setJavaScriptEnabled(false);
    try{
        HtmlPage page = webClient.getPage("https://www.base64decode.org/");
        HtmlForm form = page.getFormByName("convert_text");


        HtmlTextArea content = form.getTextAreaByName("input");
        content.setText(str);

         HtmlElement button = form.getButtonByName("decode");
         button.click();


         HtmlTextArea contentArea = form.getTextAreaByName("output"); //can't use Htmlform, as textarea is outside form element 
        String st = contentArea.getText();
        System.out.println(st);

        } 
    catch(Exception e){System.out.print(e);}



}
}

我如何在第二个文本区域中设置文本(它在表单元素之外)?

最佳答案

这里有一个工作示例:

  • 如果您想模拟用户输入,请使用 type() 方法
  • 使用 getElementByName() 查找具有名称的元素(此页面 http://htmlunit.sourceforge.net/gettingStarted.html 有更多关于查找元素的提示)
  • 您的代码必须将生成的页面视为单击按钮的结果/响应

希望对您有所帮助。

public static void main(String[] args) {
    String str = "SHRtbFVuaXQgaXMgZ3JlYXQ=";
    WebClient webClient = new WebClient(BrowserVersion.CHROME);
    webClient.getOptions().setJavaScriptEnabled(false);

    try{
        HtmlPage page = webClient.getPage("https://www.base64decode.org/");
        HtmlForm form = page.getFormByName("convert_text");

        HtmlTextArea content = form.getTextAreaByName("input");
        content.type(str);

        HtmlElement button = form.getButtonByName("decode");
        HtmlPage resultPage = button.click();

        HtmlTextArea contentArea = (HtmlTextArea) resultPage.getElementByName("output"); 
        String st = contentArea.getText();
        System.out.println("Result: '" + st + "'");

    } catch(Throwable e) {
        e.printStackTrace();
    }
}

关于java - 如何使用 java 中的 HtmlUnit 从 HTML 中不在 Form 元素中的 textarea 复制数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49335929/

相关文章:

java - Spring security oauth2 客户端 - 重定向太多

java - 获得堆栈溢出是否只影响它发生的线程?

Java HtmlUnit java.lang.NoClassDefFoundError : org/w3c/css/sac/ErrorHandler stack overflow

java - 确定使用的库以减少 JAR 文件的大小

java - java htmlunit 中的正则表达式

java - 如何使用 Spring 和 Hibernate 从基本的 DAO 更改为 Repository 接口(interface)?

java - 什么时候可以使用 "=="运算符?

java - 设置 htmlunit 的类路径

Java+HtmlUnit — 西里尔字母 urlencode 的问题

java调用另一个类的方法