2017-01-19 12 views
1

Я вход в страницу с помощью этой функции:Селен: 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); 

}

Everythi ng работает, за исключением того факта, что когда я показываю исходный код на консоли, это исходный код страницы входа (предыдущий url), и, следовательно, Assert возвращает false.

Может ли кто-нибудь указать мне правильное направление?

ответ

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")); 
+0

Это решило его. Благодаря! –

1

Это может быть вопрос времени. Подождите, пока появится какой-либо элемент на вашей новой странице, а не получите источник страницы.