Selenium + JUnit, ошибка подтверждения правильности загруженной страницы - PullRequest
0 голосов
/ 27 января 2019

Я написал код с использованием Selenium WD и JUnit, который должен проверять, загружена ли соответствующая страница, и таблица этой страницы не нулевая

Помимо утверждения, чтобы убедиться, что загружена правильная страница (проверяется, содержит ли URL указанный текст), я поместил выражение if-else в метод waitUntilPageLoaded.

import junit.framework.TestCase;
import org.openqa.selenium.By;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.junit.*;
import org.openqa.selenium.support.ui.ExpectedConditions;
import org.openqa.selenium.support.ui.WebDriverWait;

public class GuruSearch
{
    @Test
    static void checkDemoLogin()
 {
    System.setProperty("webdriver.gecko.driver", "C:\\Users\\pansa\\Documents\\Webdrivers\\geckodriver.exe");
    FirefoxDriver driver =  new FirefoxDriver();
    driver.get("https://demo.guru99.com/");
    TestCase.assertFalse(driver.getPageSource().contains("404"));
    driver.manage().window().maximize();
    //odczekaj(5000);
    WebElement browser  = driver.findElement(By.name("emailid"));
    browser.sendKeys("Test@test.com");
    browser.submit();
    waitUntilPageLoaded(driver,"access.php", 10);
    TestCase.assertTrue(driver.getPageSource().contains("Access details to demo site"));
    WebElement table = driver.findElement(By.tagName("tbody"));
    TestCase.assertNotNull(table);
    driver.close();

}

static private void odczekaj(int czas)
{
    try {
        Thread.sleep(czas);
    } catch (InterruptedException e) {
        e.printStackTrace();
        System.out.println("Przerwanie");
    }
}

private static void waitUntilPageLoaded(FirefoxDriver d, String zawiera, int timeout)
{
    WebDriverWait wait = new WebDriverWait(d, timeout);
    wait.until(ExpectedConditions.urlContains(zawiera));

if (d.getCurrentUrl().contains(zawiera))
    {
    System.out.println("OK");
    }
else
    {
    System.out.println("NOK");
    }
}
}

Оператор "if-else" в методе "waitUntilPageLoaded" возвращает "ОК", но TestCase.assertTrue (driver.getPageSource (). Содержит ("Доступ к деталям на демонстрационном сайте")) выдает AssertionError, хотя текст появляется на странице. Почему выдается ошибка AssertionError?

1 Ответ

0 голосов
/ 27 января 2019

Поскольку вы используете аннотации JUnit, аннотированный метод не должен быть статическим. Я немного изменил ваш код, попробуйте следующее:

import org.junit.Test;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.support.ui.ExpectedConditions;
import org.openqa.selenium.support.ui.WebDriverWait;

import junit.framework.TestCase;

public class GuruSearch
{
    @Test
    public void checkDemoLogin()
    {
        System.setProperty("webdriver.chrome.driver", "C:\\NotBackedUp\\chromedriver.exe");
        WebDriver driver =  new ChromeDriver();
        driver.get("https://demo.guru99.com/");
        TestCase.assertFalse(driver.getPageSource().contains("404"));
        driver.manage().window().maximize();
        //odczekaj(5000);
        WebElement browser  = driver.findElement(By.name("emailid"));
        browser.sendKeys("Test@test.com");
        browser.submit();
        waitUntilPageLoaded(driver,"access.php", 30);
        TestCase.assertTrue(driver.getPageSource().contains("Access details to demo site"));
        WebElement table = driver.findElement(By.tagName("tbody"));
        TestCase.assertNotNull(table);
        driver.close();
    }

    static private void odczekaj(int czas)
    {
        try {
            Thread.sleep(czas);
        } catch (InterruptedException e) {
            e.printStackTrace();
            System.out.println("Przerwanie");
        }
    }

    private static void waitUntilPageLoaded(WebDriver d, String zawiera, int timeout)
    {
        WebDriverWait wait = new WebDriverWait(d, timeout);
        wait.until(ExpectedConditions.urlContains(zawiera));

        if (d.getCurrentUrl().contains(zawiera))
        {
            System.out.println("OK");
        }
        else
        {
            System.out.println("NOK");
        }
    }
}

Приведенный выше код печатает «ОК», и условие подтверждения также проходит. И я думаю, это не имеет значения, если мы даем верхний / нижний регистр в контейнере. Это будет соответствовать обоим случаям.

У меня нет Firefox в моей системе, поэтому я проверил с помощью Chrome, вы меняете браузер и пытаетесь ... Надеюсь, это поможет ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...