当前位置: 首页 > 知识库问答 >
问题:

等待硒网络驱动程序,直到加载完成

商振
2023-03-14

我在eclipse中使用SeleniumWebDriver和TestNG。问题是页面在某些数据的中途重新登录,并且重新加载的时间是灵活的,这就是为什么我不能应用显式等待时间。我想让webdriver等待,直到重新加载完成。

我正在尝试通过此代码执行此操作……但它不起作用。

public void waitForPageLoadingToComplete() throws Exception {
        ExpectedCondition<Boolean> expectation = new ExpectedCondition<Boolean>() {
            public Boolean apply(WebDriver driver) {
                return ((JavascriptExecutor) driver).executeScript(
                        "return      document.readyState").equals("complete");
            }
        };
        Wait<WebDriver> wait = new WebDriverWait(driver, 30);
        wait.until(expectation);
    }

共有3个答案

龙承德
2023-03-14

document.readyState()没有反映正确的页面加载时间(例如,它不等待图像/脚本完全加载)。建议并测试了等待页面上的元素的选项(最好是您将在下一步测试中操作的元素)。正如其他人建议的那样,使用带有预期条件的WebDriveretc方法,如“visibilityOf”、“presenceOfElement”或更多方法,应该没问题。

骆照
2023-03-14

无限期地等待不是一个好主意。网站的时机也是测试的一部分。如果可能,请找出您正在测试的“页面”的服务级别协议。如果不对网站运行速度测试(这是一种测试方法:http://tools.pingdom.com/fpt/),并使用您获得的平均时间。如果这也不起作用,最后一个选择是使用行业标准。

吴鸿禧
2023-03-14

尝试以下代码来处理页面加载/页面刷新超时

WebDriver driver = new FireFoxDriver();
driver.manage().timeouts().pageLoadTimeout(30, TimeUnit.SECONDS);

请使用最新版本的chrome驱动程序,因为旧版本的chrome驱动程序不处理页面等待。

 类似资料:
  • 正在研究尝试理解显式等待的方法。 所以单选按钮被点击后,输入形式发生了变化,所以我把给它一个时间元素出现,否则会出错“元素不可见......”。所以我认为现在是理解显式等待的好时机,因为我需要等到元素出现。 但出现错误“Selenium::WebDriver::error::ElementNotVisibleError:Element当前不可见,因此可能无法与之交互”。为什么这段代码不等到元素出现

  • 下面是我为firefox浏览器初始化的selenium web驱动程序。 尽管我给出了隐式等待,但我没有等待元素。它会立即抛出not found异常。如果我放那么它工作正常,没有任何问题。但是把现在测试用例包含更多线程的任何地方。sleep比实际的测试用例代码低。有人能给我建议正确的方法吗?

  • 如何等待硒Web驱动程序中的子窗口 当我点击提交按钮,它会把我带到子窗口,我断言URL,但有时子窗口需要时间来目前使用thread.sleep(4000),但这是错误的方式。

  • 我试图使用SeleniumWebDriverWait类型,在检查元素是否存在之前,等待页面完全加载。我尝试了两种不同的方法。 第一个方法使用IgnoreExceptionTypes,然后在Until方法内调用FindElement。这会立即抛出NoTouchElementException,而无需等待。我希望这会继续尝试查找元素,直到超时,同时忽略NosTouchElementException。

  • im在Jmeter(web驱动程序)上编写Java代码以执行负载测试,我需要实现隐式等待,类似于: WDS.manage().timeouts().隐式等待(60, TimeUnit.SECONDS); 但似乎Jmeter并不理解它,我还试图用: def wait=new org.openqa.selenium.support.ui.WebDriverWait(WDS.browser,5);等待,

  • 我正在努力自动化一个网站,该网站有许多链接,这些链接通过JS事件加载新页面。基本上,有些元素是可点击的,单击一个会导致一些JavaScript运行,这会导致提交表单并路由到新页面。 现在,如果这些只是标准的HTML链接,就不会有问题,因为Selenium足够聪明,可以告诉您有一个新页面即将到来,并等待处理。但尽管如此,Selenium无法判断在这个实例中的点击是否会导致新页面加载,因此它不会等待,