Заполните значения в раскрывающемся списке на основе выбора в раскрывающемся списке выше в HtmlUnit

Я работаю над очисткой сайта через HtmlUnit. У меня есть 2 выпадающих списка в нем. 2 выпадающих списка связаны между собой так, что выбор опции 1 из выпадающего списка вызывает JavaScript на onChange (). На основе этого выбора необходимо заполнить значения в раскрывающемся списке 2.

Вот код, который я написал: Предположим, я выбрал опцию "4-Medak" в теге select (id:ddldistlist), затем он должен заполнить соответствующие значения опций в теге select (id: ddlaclist) посредством вызова JS. Но этого не происходит, когда я делаю это через HtmlUnit.

HTML код:

 <select name="ddldistlist" onchange="javascript:setTimeout('__doPostBack(\'ddldistlist\',\'\')', 0)" id="ddldistlist" style="font-weight:bold;width:150px;">
    <option value="-Select-">-Select-</option>
    <option value="1">1-Adilabad</option>
    <option value="2">2-Nizamabad</option>
    <option value="3">3-Karimnagar</option>
    <option value="4" selected="selected">4-Medak</option>
    <option value="5">5-Rangareddy</option>
    <option selected="selected" value="6">6-Hyderabad</option>
</select>
<select name="ddlaclist" id="ddlaclist" style="font-weight:bold;width:155px;">
    <option value="-Select-">-Select-</option>
    <option value="1">City 2</option>
    <option value="2">City 1</option>
</select>
public void scrapeWebsite() {
    WebClient webClient = new WebClient(BrowserVersion.CHROME);
    webClient.getOptions().setThrowExceptionOnScriptError(false);
    webClient.getOptions().setJavaScriptEnabled(true);
    webClient.getOptions().setCssEnabled(false);
    webClient.getOptions().setRedirectEnabled(true);
    webClient.setAjaxController(new NicelyResynchronizingAjaxController());
    webClient.getCookieManager().setCookiesEnabled(true);
    webClient.getOptions().setTimeout(90000);

    String url = "www.xyz.com";

    try {
            HtmlPage page = webClient.getPage(url);

            // drop down list 1
            HtmlSelect districtNameSelect = (HtmlSelect) page.getElementById("ddldistlist");
            HtmlOption districtNameOption = districtNameSelect.getOptionByValue("6");
            districtNameSelect.setSelectedAttribute(districtNameOption,true);

            String js = districtNameSelect.getOnChangeAttribute();
            page = (HtmlPage) page.executeJavaScript(js).getNewPage();

            webClient.waitForBackgroundJavaScript(5000);

            // drop down list 2
            HtmlSelect cityNameSelect = (HtmlSelect) page.getElementById("ddlaclist");
            System.out.println("City name list : " + cityNameSelect.asText());
        } catch (Exception exception) {
            System.out.println("Exception:" + e.getMessage());
        }
    }
}

0 ответов

Другие вопросы по тегам