Javascript 根据HtmlUnit中上述下拉列表中的选择填充下拉列表中的值

Javascript 根据HtmlUnit中上述下拉列表中的选择填充下拉列表中的值,javascript,java,jquery,ajax,htmlunit,Javascript,Java,Jquery,Ajax,Htmlunit,我正在通过HtmlUnit抓取一个网站。我有两个下拉列表。 这两个下拉列表是链接的,因此选择下拉列表1选项可以对onChange()进行JavaScript调用。基于此选择,将填充下拉列表2中的值 以下是我编写的代码: 假设我在select标记(id:ddldistlist)中选择了“4-Medak”选项,那么它应该通过JS调用在select标记(id:ddlaclist)中填充相应的选项值。但当我通过它来做的时候,这是不会发生的 HTML代码: -挑选- 1-Adilabad 2-尼扎马巴德

我正在通过HtmlUnit抓取一个网站。我有两个下拉列表。 这两个下拉列表是链接的,因此选择下拉列表1选项可以对onChange()进行JavaScript调用。基于此选择,将填充下拉列表2中的值

以下是我编写的代码: 假设我在select标记(id:ddldistlist)中选择了“4-Medak”选项,那么它应该通过JS调用在select标记(id:ddlaclist)中填充相应的选项值。但当我通过它来做的时候,这是不会发生的

HTML代码:


-挑选-
1-Adilabad
2-尼扎马巴德
3-卡里姆纳加尔
4-麦达克
5-Rangareddy
6-海得拉巴

-挑选-
城市2
城市1
公共网站(){
WebClient WebClient=新的WebClient(BrowserVersion.CHROME);
webClient.getOptions().SetThroweExceptionOnScriptError(false);
webClient.getOptions().setJavaScriptEnabled(true);
webClient.getOptions().setCssEnabled(false);
webClient.getOptions().setRedirectEnabled(true);
setAjaxController(新的NicelyResynchronizingAjaxController());
webClient.getCookieManager().setCookiesEnabled(true);
webClient.getOptions().setTimeout(90000);
字符串url=“www.xyz.com”;
试一试{
HtmlPage=webClient.getPage(url);
//下拉列表1
HtmlSelect districtNameSelect=(HtmlSelect)page.getElementById(“ddldistlist”);
HtmlOption districtNameOption=districtNameSelect.getOptionByValue(“6”);
districtNameSelect.setSelectedAttribute(districtNameOption,true);
字符串js=districtNameSelect.getOnChangeAttribute();
page=(HtmlPage)page.executeJavaScript(js.getNewPage();
webClient.waitForBackgroundJavaScript(5000);
//下拉列表2
HtmlSelect cityNameSelect=(HtmlSelect)page.getElementById(“ddlaclist”);
System.out.println(“城市名称列表:+cityNameSelect.asText());
}捕获(异常){
System.out.println(“异常:+e.getMessage());
}
}
}

不清楚-这种下拉行为是在您正在抓取的页面中,还是在您正在构建的页面中?忘了提到@Roamer-1888。是的,他们是两个不同的下拉“选择标签”在网页上。等等,让我来更新这个问题。你需要提供完整的案例(希望如此),这样其他人就可以重现这个问题了。我现在更新了我的问题陈述。希望这能给人一个清晰的理解。现在请检查。
htmlSelect.setSelectedAttribute
应自动触发JavaScript,但是值为
6
的选项已被选中,因此将忽略它。尝试使用其他值,否则请提供带有/不带URL的“完整”页面,例如,
\uu doPostBack
做什么?