有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java切换到框架在HtmlUnit驱动程序中不工作

我正在使用HtmlUnit驱动程序,但是我的代码可以与Firefox或chrome一起使用,但是当我开始使用HtmlUnit驱动程序时,它可以工作到一定程度,但在那之后,它仍然停留在我使用驱动程序的位置。切换到()。框架(“大”)

我参考了下面的链接,但不确定为什么它不起作用

.switchTo().frame(<'frameId'>); not working with HtmlUnit Driver

https://sqa.stackexchange.com/questions/15309/selenium-htmlunit-how-do-i-disable-js-errors

下面是我试过的

自定义HtmlUnitDriver。爪哇

    public class CustomHtmlUnitDriver extends HtmlUnitDriver {
 @Override
    protected WebClient modifyWebClient(WebClient client) {
        WebClient modifiedClient = super.modifyWebClient(client);
        modifiedClient.getOptions().setThrowExceptionOnScriptError(false); // see here
        modifiedClient.getOptions().setJavaScriptEnabled(true);
        return modifiedClient;
    }
}

启动。爪哇

  static CustomHtmlUnitDriver driver = new CustomHtmlUnitDriver();
    Thread.sleep(3000);
    driver.manage().window().maximize();
     ---
   /*some working  code */
   driver.switchTo().frame("Big");
  /*and then the error as below*/

错误为

org.openqa.selenium.NoSuchFrameException: Unable to locate frame with name or ID: Big Build info: version: '3.13.0', revision: '2f0d292', time: '2018-06-25T15:24:21.231Z' System info: host: 'CPU-38', ip: '000000', os.name: 'Windows 8', os.arch: 'x86', os.version: '6.2', java.version: '1.8.0_171' Driver info: driver.version: unknown at org.openqa.selenium.htmlunit.HtmlUnitDriver$HtmlUnitTargetLocator.frame(HtmlUnitDriver.java:1507)


共 (1) 个答案

  1. # 1 楼答案

    我想到了两个可能的原因

    1. 修改客户端。getOptions()。SetThroweExceptionOnScriptorror(false);这意味着您忽略了js错误。HtmlUnit js支持在某些方面并不完美,也许js函数在该函数(或从该函数调用的函数)之前失败,因此框架永远不会被创建。请查看您的日志,可能有提示
    2. 框架由async js创建;也许您必须在最后一个工作步骤之后等待,直到创建帧。使用waitForBackground。。。在客户端上添加一些等待时间

    如果您正在查找的框架是纯Html响应的一部分(使用Charles之类的工具查看浏览器和服务器之间的实际情况),这可能是HtmlUnit/WebDriver中的一个bug

    请提供一个完整的工作示例,让我们有机会重现/调试该问题