代码之家  ›  专栏  ›  技术社区  ›  g.pickardou

Findelements要等多久?

  •  0
  • g.pickardou  · 技术社区  · 7 年前

    假设隐式超时是10秒。 然后我执行findelements(复数!)用一些xpath。

    问题

    FindElements要等多久,直到决定返回? (请忽略任何语言的延迟执行功能。然后我将我的问题改写为findelements(…).count())

    推理问题

    我想如果没有匹配的话,它会等10秒。 然而,如果至少有一个匹配,那么它会立即返回吗?在这种情况下,如果在10秒内由页面的javascript填充,我们将错过以下可能的元素。

    我的一般问题是:

    • 我们不想等待超时 无条件地 一直都是(很糟糕)
    • 我们不想错过超时内可用的任何匹配项(这将是不好的2

    重新措辞的问题

    哪一个坏的(1或2)是现实,关于发现行为?

    1 回复  |  直到 7 年前
        1
  •  1
  •   GPT14    7 年前

    此方法受 'implicit wait' 执行时生效的时间。当隐式等待时,此方法将在找到的集合中有0个以上的项时立即返回,或者在达到超时时返回空列表。

    您可以做的是,通过检查 document.readyState 等于完成,然后调用 driver.findElements 方法。

    public void waitForPageLoaded() {
            ExpectedCondition<Boolean> expectation = new
                    ExpectedCondition<Boolean>() {
                        public Boolean apply(WebDriver driver) {
                            return ((JavascriptExecutor) driver).executeScript("return document.readyState").toString().equals("complete");
                        }
                    };