gpt4 book ai didi

javascript - HTML 单元由于某种原因无法找到表单。我怀疑是因为 angularJS 但不确定

转载 作者:太空宇宙 更新时间:2023-11-04 12:32:15 25 4
gpt4 key购买 nike

我正在使用 HTMLunit 登录页面然后上传文件。到目前为止,我已经能够登录,但无法找到该表格。它给我一个错误,它无法找到该元素,但它存在于 HTML 页面中。

JAVA代码。

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)

最佳答案

当我在禁用 JavaScript 的情况下加载表单时,该表单不在页面上,因此我假设它是稍后通过 JavaScript 添加的。

所以您的问题可能是您必须等待表单出现。

一般来说,通过这种方式搜索问题:

如果例如找不到表单,我只是在尝试访问元素之前记录页面源。

就您而言:

 HtmlPage page2= (HtmlPage) webClient.getPage("https://controlcenter-itv2.centurylink.com/business/controlcenter/ordering/initiate-orders-whsl/batch");
System.out.println(page2.asXml());


HtmlForm form1 =(HtmlForm) page2.getElementById("batchOrderForm");

然后我查看日志输出是否可以在输出中找到所需的元素。通常我需要等待一些 javascrit 完成更改页面源。

关于javascript - HTML 单元由于某种原因无法找到表单。我怀疑是因为 angularJS 但不确定,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37735391/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com