Tag: htmlunit

如何让2个HtmlUnit的WebClient使用相同的cookie?

如果我在不同的线程中创建2个WebClient,如何让它们使用相同的cookie?

HtmlUnit忽略JavaScript错误?

我正试图遍历一个网站,但在他们的一个页面上我收到此错误: EcmaError: lineNumber=[671] column=[0] lineSource=[null] name=[TypeError] sourceName=[https://reservations.besodelsolresort.com/asp/CalendarPopup.js] message=[TypeError: Cannot read property “parentNode” from undefined (https://reservations.besodelsolresort.com/asp/CalendarPopup.js#671)] com.gargoylesoftware.htmlunit.ScriptException: TypeError: Cannot read property “parentNode” from undefined (https://reservations.besodelsolresort.com/asp/CalendarPopup.js#671) 无论如何我可以忽略这个错误吗? 如果日历加载正确,我并不特别在意。

HtmlUnit API for Java(无头浏览器)中的问题?

我正在使用HtmlUnit无头浏览器来浏览这个网页 (你可以看到网页以更好地理解这个问题)。 我已将select的值设置为“1” http://sofzh.miximages.com/java/14m70up.jpg 通过以下命令 final WebClient webClient = new WebClient(BrowserVersion.INTERNET_EXPLORER_7); try { // Configuring the webClient webClient.setJavaScriptEnabled(true); webClient.setThrowExceptionOnScriptError(false); webClient.setCssEnabled(true); webClient.setUseInsecureSSL(true); webClient.setRedirectEnabled(true); webClient.setActiveXNative(true); webClient.setAppletEnabled(true); webClient.setPrintContentOnFailingStatusCode(true); webClient.setAjaxController(new NicelyResynchronizingAjaxController()); // Adding listeners webClient.addWebWindowListener(new com.gargoylesoftware.htmlunit.WebWindowListener() { public void webWindowOpened(WebWindowEvent event) { numberOfWebWindowOpened++; System.out.println(“Number of opened WebWindow: ” + numberOfWebWindowOpened); } public void webWindowContentChanged(WebWindowEvent event) { } public void […]

如何在Eclipse项目中设置HtmlUnit?

我的项目包括htmlunit jar并下载一些页面内容。 然而,可执行jar(包括libs,eclipse导出function)仅适用于我创建它的机器(在不同的情况下它不执行)。 编辑:它没有执行,因为它在启动时不显示“Starting Headless Browser”MessageBox。 我使用了Eclipse Indigo:File> Export> Runnable jar> package所需的libratries到生成的jar中 帮助,众神: import java.io.*; import com.gargoylesoftware.htmlunit.BrowserVersion; import com.gargoylesoftware.htmlunit.Page; import com.gargoylesoftware.htmlunit.RefreshHandler; import com.gargoylesoftware.htmlunit.WebClient; import com.gargoylesoftware.htmlunit.html.HtmlPage; import com.gargoylesoftware.htmlunit.html.HtmlTextInput; import java.util.regex.Matcher; import java.util.regex.Pattern; import javax.swing.*; import javax.swing.filechooser.FileSystemView; 编辑:根据要求提供进一步的代码 public class MyTest { public static void main(String[] arguments) { try{ JOptionPane.showMessageDialog(null, “Starting Headless Browser”); JFileChooser fr = new […]

HtmlUnit,如何在不单击提交按钮的情况下发布表单?

我知道在HtmlUnit中我可以在表单上提交fireEvent并将其发布。 但是如果我禁用了javascript并想使用一些内置函数发布表单呢? 我检查了javadoc并且没有找到任何方法来做到这一点。 奇怪的是HtmlForm中没有这样的function…… 我在htmlunit页面上阅读了javadoc和教程,我知道我可以使用getInputByName()并单击它。 BuT有时会有没有提交类型按钮的表单,甚至没有这样的按钮但没有name属性。 我在这种情况下寻求帮助,这就是我使用fireEvent但它并不总是有效的原因。

JavaScript未在HtmlUnit中正确执行

我目前正在使用HtmlUnit开发一些测试。 它正在加载一个包含braintree.js(它们的表单加密库)的页面。 我有一堆正在运行,但我被困在它调用加密的地方。 有问题的JS是: (function() { try { var ab = new Uint32Array(32); crypto.getRandomValues(ab); sjcl.random.addEntropy(ab, 1024, “crypto.getRandomValues”); } catch (e) {} })(); HtmlUnit抛出: EcmaError, ReferenceError, “‘crypto’ is not defined.” 我想HtmlUnit不包括加密。 是否可以自己包含加密库?

从htmlunit WebClient调用getPage,禁用JavaScript并将setTimeout设置为10000等待

我遇到了Htmlunit的问题,我在调用getpage之前禁用了JavaScript并将超时设置为10000,我预计超时后会出现exception,但htmlunit会永远等待。 经过一番搜索,我发现2009年有人遇到了同样的问题( 连接超时无法正常工作 ),他抱怨“连接超时无法正常工作”,并且关于超时中的某些值无法正常工作,但直到2011年才得到任何答案。 这里有人询问抛出了什么exception,但我认为它并不总是抛出exception。 我也无法从Apache HttpClient setTimeout得到答案。 你可以看到另一个人在终止或停止HtmlUnit中询问停止超时。 如果你尝试,你可以看到它有多疯狂: milisecReqTimeout = 10; while(true) { _webclient.setTimeout(milisecReqTimeout); milisecReqTimeout = milisecReqTimeout + 10; _htmlpage = _webclient.getPage(url); }

当我使用jsoup或htmlunit获取页面时,href字段丢失

我正在尝试解析谷歌图片搜索结果 。 我正在尝试获取元素的href属性 。 我注意到当我以编程方式获取页面时, href字段丢失了(这与jsoup和htmlunit一起发生)。 比较通过java编程获得的页面元素和实际浏览器加载的页面元素,唯一的区别是,实际上缺少的href字段 (其余部分是相同的)。 href属性(https://stackoverflow.com/questions/39044648/href-field-missing-when-i-get-the-page-using-jsoup-or-htmlunit/IMAGE_LINK)如下: /imgres?imgurl=http%3A%2F%2Fcdn.zonarutoppuden.com%2Fns%2Fpe‌​liculas-naruto-shipp‌​uden.jpg&imgrefurl=h‌​ttp%3A%2F%2Fwww.zona‌​rutoppuden.com%2F201‌​0%2F10%2Fnaruto-ship‌​puden-peliculas.html‌​&docid=JR8NPqKrF3ac_‌​M&tbnid=0EPPOYQcflXk‌​MM%3A&w=900&h=600&bi‌​h=638&biw=1275&ved=0‌​ahUKEwih9O2e88_OAhWM‌​ExoKHRLGAGQQMwg2KAMw‌​Aw&iact=mrc&uact=8 也许javascript引擎存在一些问题? 或者可能是网站使用的某种算法反解析? Snippet Java代码: WebClient webClient = new WebClient(BrowserVersion.CHROME); webClient.waitForBackgroundJavaScript(50000); HtmlPage page1=null; try { // Get the first page page1 = webClient.getPage(URL); System.out.println(page1.asXml()); } catch (FailingHttpStatusCodeException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (MalformedURLException e) { // TODO Auto-generated catch block e.printStackTrace(); […]

如何告诉HtmlUnit的WebClient下载图像和CSS?

如何使WebClient像通常的Web浏览器一样下载外部css样式表和图像体?

HtmlUnit仅显示GWT App的主机HTML页面

我正在使用HtmlUnit API向我的GWT应用添加抓取工具支持,如下所示: PrintWriter out = null; try { resp.setCharacterEncoding(CHAR_ENCODING); resp.setContentType(“text/html”); url = buildUrl(req); out = resp.getWriter(); WebClient webClient = webClientProvider.get(); // set options WebClientOptions options = webClient.getOptions(); options.setCssEnabled(false); options.setThrowExceptionOnScriptError(false); options.setThrowExceptionOnFailingStatusCode(false); options.setRedirectEnabled(true); options.setJavaScriptEnabled(true); // set timeouts webClient.setJavaScriptTimeout(0); webClient.waitForBackgroundJavaScript(20000); // ajax controller webClient.setAjaxController(new NicelyResynchronizingAjaxController()); // render page HtmlPage page = webClient.getPage(url); webClient.getJavaScriptEngine().pumpEventLoop(timeoutMillis); out.println(page.asXml()); webClient.closeAllWindows(); } … 然而; […]