Java如何使用动态生成的名称操作html文本元素

Java how to manipulate a html text element with dynamic generated name?

本文关键字:操作 html 文本 元素 何使用 动态 Java      更新时间:2023-09-26

我想在网站上的input type="text"标签中操作或设置文本。但是这个输入在每个负载上都有一个动态生成的名称。

如何在java中获取和操作这个元素?

以下是的示例

<form method="POST" name="sform" class="form-horizontal" role="form" style="text-align: center;">
<input type="text" name="address" class="form-control" style="position: absolute; left: -5000px">
<input type="checkbox" name="honeypot" style="position: absolute; left: -5000px">
<center>
<input type="text" name="VHqnx63SwDau2nuNOOFRM2MCJ5sJawbpHv" class="form-control" value="" 
                    placeholder="Type Text here" style="width: 448px; text-align: center;">

"VHqnx63SwDau2nuNOOFRM2MCJ5sJawbpHv"这个名字出现在每个新加载的网站上。

对于这个问题,我没有发现真正有用的帖子。

我应该使用类似jsoup的东西吗?

是的,您肯定应该使用Jsoup。

对于Jsoup,它应该像这样简单:

Document doc = Jsoup.connect(url).get();
System.out.println(doc.select("form[name=sform] > center > input").first());

这从HTML中获得第一个输入元素,该元素是form元素中的centre元素的子元素。

打印:

<input type="text" name="VHqnx63SwDau2nuNOOFRM2MCJ5sJawbpHv" class="form-control" value="" placeholder="Type Text here" style="width: 448px; text-align: center;">

Jsoup还提供了很多其他很酷的东西,比如直接获取或设置属性等等。所以你可以做:

Element e = doc.select("form[name=sform] > center > input").first();
e.attr("value", "Something");
System.out.println(e);

哪个会打印:

<input type="text" name="VHqnx63SwDau2nuNOOFRM2MCJ5sJawbpHv" class="form-control" value="Something" placeholder="Type Text here" style="width: 448px; text-align: center;">

将值设置为"Something"。