为了账号安全,请及时绑定邮箱和手机立即绑定

我可以通过 Java 在 Selenium 中使用没有 ExpectedCondition

我可以通过 Java 在 Selenium 中使用没有 ExpectedCondition

慕盖茨4494581 2022-07-14 09:46:09
我有一个项目正在使用 Cucumber/Selenium 进行前端测试。我被告知使用 WebDriverWait 而不是Thread.sleep()完成测试。但是,在这种情况下,我不是在寻找预期的条件。我确实需要在页面加载时暂停测试。如果它在等待之前搜索 xPath,它将单击搜索中的第一项并继续测试错误的内容。
查看完整描述

3 回答

?
四季花海

TA贡献1811条经验 获得超5个赞

为什么需要暂停巡回测试?

如果您需要等待 untli 元素可见,请使用:new WebDriverWait(WebDriver driver, String timeToWait).until(ExpectedConditions.visibilityOf(WebElement element));

如果您需要等待 untli 元素可点击使用:new WebDriverWait(WebDriver driver, String timeToWait).until(ExpectedConditions.elementToBeClickable(WebElement element));

如果您需要等待 untli 元素将出现在 DOM 上,请使用:webDriver.manage().timeouts().implicitlyWait(String timeToWait, TimeUnit.SECONDS);

使用 Thread.sleep() 或在指定时间内暂停测试是一种不好的做法。


查看完整回答
反对 回复 2022-07-14
?
函数式编程

TA贡献1807条经验 获得超9个赞

如果您打算在不使用任何ExpectedConditions的情况下使用WebDriverWait ,而您需要在页面加载时暂停测试,您还可以使用Java表达式,如下所示: lambda

new WebDriverWait(driver, 20)
        .until(d -> ((JavascriptExecutor)d).executeScript("return document.readyState")
            .equals("complete"));


查看完整回答
反对 回复 2022-07-14
?
忽然笑

TA贡献1806条经验 获得超5个赞

对 Java + Selenium使用以下方法:


public boolean  isPageReady(WebDriver driver){

   boolean readyStateComplete = false;

    while (!readyStateComplete){

        JavascriptExecutor executor = (JavascriptExecutor) driver;

        readyStateComplete = executor.executeScript("return document.readyState").equals("complete");

    }

    return  readyStateComplete;

}

对于 C# + 硒:


private void WaitUntilDocumentIsReady(TimeSpan timeout){

    var javaScriptExecutor = WebDriver as IJavaScriptExecutor;

    var wait = new WebDriverWait(WebDriver, timeout);


    // Check if document is ready

    Func<IWebDriver, bool> readyCondition = webDriver => javaScriptExecutor

            .ExecuteScript("return (document.readyState == 'complete' && jQuery.active == 0)");

    wait.Until(readyCondition);

}


查看完整回答
反对 回复 2022-07-14
  • 3 回答
  • 0 关注
  • 181 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号