等待页面加载HtmlUnitDriver

时间:2018-05-07 08:47:16

标签: java selenium htmlunit-driver

我有几个使用Selenium和HtmlUnitDriver运行的测试。有时,当我运行它们并想要单击元素或读取文本时,无法找到元素。每次抛出异常时,我都会保存页面代码以进行调试。但是当我检查代码时,元素就在那里,当我重新运行测试时,一切正常。 我的猜测是,当我尝试访问该元素时,该页面未完全加载。 因此,在尝试访问元素之前,我想等到Selenium完成加载页面。

我喜欢两种方法来实现它:

  1. 执行Javascript(例如window.initComplete)并等待结果为true。问题:在Selenium中我必须有一个JavascriptExecuter实例,但HtmlUnitDriver不是从该类派生的,我无法切换到FirefoxDriver(它实现了JavascriptExecuter接口),因为我们正在运行测试无头。

  2. 等待页面上的最后一个元素加载 这种方法的问题在于页面基于我们的框架,如果发生变化,并且页面底部突然出现了不同的元素,我必须调整每个测试。

  3. 有关如何解决问题的任何建议?

1 个答案:

答案 0 :(得分:1)

您可以创建自定义的ExpectedCondition:

this.serv.getOrder(this.locationId).subscribe(res=>{
      this.OrdersData = res.Data;

    });