gpt4 book ai didi

java - Htmlunit 中的 HtmlAnchor click() 函数不起作用

转载 作者:行者123 更新时间:2023-11-29 18:26:50 24 4
gpt4 key购买 nike

我正在尝试使用 HtmlUnit 自动浏览网站。我需要在这个过程中按下一些按钮。首先,我用这个 xml 构建一个按钮的 HtmlAnchor 对象:

<a href="dog.php">
<img src="http://images.hand.co.uk/Pic/site_images/hand/Myper/MyOrder/images/DogRed.gif" width="75" height="31" border="0" alt="1 adds"/>
</a>

当我使用 click() 方法单击它时效果很好。然后我被移动到另一个页面,其中我有链接,我需要单击该链接才能显示所需的内容。单击后我没有移动到另一个页面,它只是一个 Java 脚本函数触发。

这是第二个链接的 anchor :

<a style="color: black; font-weight: bold;" href="javascript:show_me('DogDetails.php?DogID=2445485', 2445485, 800);">
details
</a>

对于这两个元素,我使用 HtmlAnchor 对象及其 click() 方法。但是该方法对第二个元素什么都不做。

我也尝试过使用 HtmlUnit 中内置的 JavaScript 引擎,但没有成功。我怎样才能点击这个与 HtmlUnit 平台的永久链接?

最佳答案

最可能的问题是 HtmlUnit 没有等待 JavaScript 完成运行。 HtmlUnit 常见问题解答提出了 3 种解决方法:http://htmlunit.sourceforge.net/faq.html#AJAXDoesNotWork .

其中,最简洁的解决方案是让您的 WebClient 等待 AJAX 请求完成:

webClient.setAjaxController(new NicelyResynchronizingAjaxController());

我发现一些网站巧妙地在后台线程上运行 AJAX - 这意味着 NicelyResynchronizingAjaxController 不会等待它完成,因为它只监视主 UI 线程。有一个很好的答案here这解释了如何等待所有线程而不仅仅是主线程。

关于java - Htmlunit 中的 HtmlAnchor click() 函数不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12217889/

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