Я использую HTMLunit для входа на страницу, а затем для загрузки файла. До сих пор я мог войти, но я не могу найти форму. Это дает мне ошибку, что он не может найти элемент, но он существует на странице HTML.HTML-блок не может найти форму по какой-либо причине. Я подозреваю из-за angularJS, но не уверен
JAVA CODE.
public static void main(String[] args) {
WebClient webClient = new WebClient();
webClient.getOptions().setJavaScriptEnabled(true);
// webClient.getOptions().set(true);
webClient.setAjaxController(new NicelyResynchronizingAjaxController());
try {
HtmlPage page = (HtmlPage) webClient
.getPage("https://controlcenter-itv2.centurylink.com/business/controlcenter/home"); //loggin into this page
HtmlForm form = page.getFormByName("lqLogin"); //grabbing the form on the page
((HtmlInput) form.getFirstByXPath("//*[@id='userId']")).setValueAttribute("*****"); //setting up the username for the field
HtmlInput passWordInput = form.getInputByName("password");
passWordInput.removeAttribute("disabled");
passWordInput.setValueAttribute("****"); // password for the field
HtmlPage page1 = form.getInputByValue("Login").click(); // works fine
HtmlPage page2= (HtmlPage) webClient.getPage("https://controlcenter-itv2.centurylink.com/business/controlcenter/ordering/initiate-orders-whsl/batch");
System.out.println(page2.asText());
HtmlForm form1 = page2.getFormByName("orderForm"); //doesnt work
//page2.getFirstByXPath("//*[@id='batchUpload']");
// page1 = form1.getInputByValue("Browse").click();
//*[@id="fileName"]
HtmlFileInput input = (HtmlFileInput)form1.getFirstByXPath("//*[@id='fileName']"); //trying to get the form on the upload page not working
// input.setContentType("text/html");
//file that needs to be uploaded
//input.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
input.setValueAttribute("file:/C:\fileuploadTEST.txt");
Это HTML код
<form id="batchOrderForm" class="ng-pristine ng-valid" name="orderForm">
Это ошибка, я получаю
com.gargoylesoftware.htmlunit.ElementNotFoundException: elementName=[form] attributeName=[name] attributeValue=[orderForm]
at com.gargoyles[enter image description here][1]oftware.htmlunit.html.HtmlPage.getFormByName(HtmlPage.java:644)
У вас есть вложенная форма на странице? Раньше у меня была аналогичная проблема, и я ударился головой о стену, пока не узнал ... – poashoas
Ist тега в 'id' вы должны пойти по атрибуту id, а не по атрибуту name. – MrSmith42