Как решить проблему схожести блоков кода с помощью visibilityOfElementLocated? - PullRequest
0 голосов
/ 30 мая 2018
public class TestingLogin {

    WebDriver driver;
    @BeforeTest
    public void setup()
    {
        System.setProperty("webdriver.gecko.driver", "\\GeckoDriver\\geckodriver.exe");
        driver=new FirefoxDriver();
        driver.manage().window().maximize();
        driver.get("https://test.admin.placer.life/login");
    }

    @Test(priority=9)
    public void reset_null_email()
    {
        LoginPage login=new LoginPage(driver);
        driver.findElement(By.xpath("//*[@id='app']/div/div[2]/a")).click();
        WebDriverWait wait = new WebDriverWait(driver, 60);
        wait.until(ExpectedConditions.visibilityOfElementLocated(By.xpath("//*[@id='app']/div/div[2]/p[contains(text(),'Reset Password')]")));
        login.set_reset_email("");
        login.click_reset_button(); 
        WebDriverWait wait_reset_psw = new WebDriverWait(driver, 10);
        wait_reset_psw.until(ExpectedConditions.visibilityOfElementLocated(By.xpath("//*[@id='app']/div/div[2]/form/div[2]/span[2]")));
        Assert.assertEquals(driver.findElement(By.xpath("//*[@id='app']/div/div[2]/form/div[2]/span[2]")).getText(),"The email field is required.");
        driver.navigate().refresh();
    }

    @Test(priority=10)
    public void reset_invalid_email()
    {
        LoginPage login=new LoginPage(driver);
        driver.findElement(By.xpath("//*[@id='app']/div/div[2]/a")).click();
        WebDriverWait wait = new WebDriverWait(driver, 120);
        wait.until(ExpectedConditions.elementToBeClickable(By.xpath("//*[@id='app']/div/div[2]/p[contains(text(),'Reset Password')]")));
        login.set_reset_email("a@gmail.com");
        login.click_reset_button(); 
        WebDriverWait wait_reset_psw = new WebDriverWait(driver, 10);
        wait_reset_psw.until(ExpectedConditions.elementToBeClickable(By.xpath("//*[@id='app']/div/div[2]/form/div[2]/span[2]")));
        Assert.assertEquals(driver.findElement(By.xpath("//*[@id='app']/div/div[2]/form/div[2]/span[2]")).getText(),"The email field is required.");
        driver.navigate().refresh();
    }       
    @AfterTest
    public void close()
    {
        driver.close();
    }

}

Привет всем, я попытался reset_invalid_email () с " visibilityOfElementLocated ", но это причина провала теста, потому что, похоже, сходство блоков кода, я думаю. Так что я пробовал это с" elementToBeClickable ". Но это также вызывает ошибку.

Пожалуйста, помогите

Заранее спасибо

1 Ответ

0 голосов
/ 30 мая 2018

По вашему вопросу, как вы упомянули о методе reset_invalid_email(), вы можете использовать решение ниже:

Несколько слов:

  • Всякий раз, когда вы намереваетесь щелкнуть элемент, используйтеelementToBeClickable() метод.
  • Браузер Firefox открывается в Максимальный режим , поэтому вам не нужно использовать driver.manage().window().maximize();
  • Если вам нужно развернуть любой браузер, используйте * Параметры Класс вместо.
  • Всегда вызывайте driver.quit() в методе tearDown(){}, чтобы изящно закрыть и уничтожить экземпляры WebDriver и Web Client .
  • Ваш блок рабочего кода:

    import org.openqa.selenium.By;
    import org.openqa.selenium.WebDriver;
    import org.openqa.selenium.firefox.FirefoxDriver;
    import org.openqa.selenium.support.ui.ExpectedConditions;
    import org.openqa.selenium.support.ui.WebDriverWait;
    import org.testng.Assert;
    import org.testng.annotations.AfterTest;
    import org.testng.annotations.BeforeTest;
    import org.testng.annotations.Test;
    
    public class q50598754 {
    
        WebDriver driver;
        @BeforeTest
        public void setup()
        {
            System.setProperty("webdriver.gecko.driver", "C:\\path\\to\\geckodriver.exe");
            driver=new FirefoxDriver();
            driver.get("https://test.admin.placer.life/login");
        }
    
        @Test(priority=10)
        public void reset_invalid_email()
        {
            //LoginPage login=new LoginPage(driver);
            new WebDriverWait(driver, 20).until(ExpectedConditions.elementToBeClickable(By.linkText("I forgot my password"))).click();
            new WebDriverWait(driver, 10).until(ExpectedConditions.visibilityOfElementLocated(By.xpath("//*[@id='app']/div/div[2]/p[contains(text(),'Reset Password')]")));
            //login.set_reset_email("a@gmail.com");
            //skipped to reproduce the error message The email field is required
            //login.click_reset_button(); 
            driver.findElement(By.cssSelector("button.btn.btn-primary.btn-block.btn-flat")).click();;
            Assert.assertEquals(driver.findElement(By.cssSelector("div.form-group.has-feedback.has-error span.help-block")).getText(),"The email field is required.");
        } 
    
        @AfterTest
        public void close()
        {
            driver.quit();
        }
    }
    
  • Консольный вывод:

    PASSED: reset_invalid_email
    
    ===============================================
        Default test
        Tests run: 1, Failures: 0, Skips: 0
    ===============================================
    
    
    ===============================================
    Default suite
    Total tests run: 1, Failures: 0, Skips: 0
    ===============================================
    
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...