有 Java 编程相关的问题?

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

JavaSelenium:getPageSource()返回以前页面的源代码

我正在使用以下功能登录页面:

public static void login() {
   driver.get(url);
   driver.findElement(By.name("username")).clear();
   driver.findElement(By.name("username")).sendKeys("username- login");
   driver.findElement(By.name("password")).clear();
   driver.findElement(By.name("password")).sendKeys("password");
   driver.findElement(By.name("submit")).click();
   driver.manage().timeouts().pageLoadTimeout(30, TimeUnit.SECONDS);

}

登录成功,现在我想通过检查登录页上的某些元素来验证这一点,如下所示:

public static void testLogin(WebDriver driver) {
   String pageSource = driver.getPageSource();
   //Assert.assertTrue("Login was not successful!", pageSource.contains("Welcome to the page!"));
   System.out.println(pageSource);

}

除了在控制台上显示源代码时,它是登录页面(以前的url)的源代码,因此断言返回false之外,其他一切都正常工作

谁能给我指出正确的方向吗


共 (2) 个答案

  1. # 1 楼答案

    这可能是时间问题。等待新页面上出现某些元素,然后获取页面源

  2. # 2 楼答案

    您可以等待一段时间,直到新页面打开:

    WebDriverWait wait = new WebDriverWait(driver, 10);  
    wait.until(ExpectedConditions.presenceOfElementLocated(By.xpath("//*[contains(.,'Welcome to the page!')]")));
    

    这应该允许您等待新页面中包含文本值'Welcome to the page!'的元素出现在DOM

    或者,您可以等待页面标题更改:

    WebDriverWait wait = new WebDriverWait(driver, 10);
    wait.until(ExpectedConditions.titleContains("New page title"));