Его действие с каждым тестовым сценарием я пытаюсь создать с помощью селена + TestNG. После первого метода @test метод webdriver никогда не идентифицирует элементы в режиме отдыха @test
и всегда объявляет их как fail.Selenium не идентифицирует элемент во втором тесте
Чтобы сделать это просто следующий сценарий: Нагрузки веб-драйверов на страницу, и в 1-ом @test(priority=0)
он ищет Google, войдите в кнопку и нажимает на нее, чтобы загрузить Google знак в экран. Во втором @test(priority=1)
Я пытаюсь определить текстовое поле электронной почты по его идентификатору, но всегда получаю исключение из элемента, который не найден. Но если я переведу код из 2-го теста в 1-й тест, он успешно выполняется
Вот фрагмент кода. Метод enterCredentials()
- это проблема.
public class CSgoogleLogin extends CloudDriver {
@Test(priority=0)
public void attemptLogin(){
WebElement myDynamicElement = (new WebDriverWait(driver, 100))
.until(ExpectedConditions.presenceOfElementLocated(By.xpath("//*[@id='ROOT-2521314']/div/div[2]/div/div[1]/div/div/div/center/div[3]/div[2]/div[1]/div/span/img")));
driver.findElement(By.xpath("//*[@id='ROOT-2521314']/div/div[2]/div/div[1]/div/div/div/center/div[3]/div[2]/div[1]/div/span/img")).click();
}
@Test(priority=1)
public void enterCredentials(){
WebElement myDynamicElement;
if(!driver.findElement(By.id("Email")).isDisplayed()){
myDynamicElement = (new WebDriverWait(driver, 1))
.until(ExpectedConditions.presenceOfElementLocated(By.id("Email")));
}
//Entering Username
driver.findElement(By.id("Email")).sendKeys("xyz");
driver.findElement(By.id("next")).click();
myDynamicElement = (new WebDriverWait(driver, 1))
.until(ExpectedConditions.presenceOfElementLocated(By.xpath("//*[@id='Passwd']")));
//Entering Password
driver.findElement(By.id("Passwd")).sendKeys("xyz");
driver.findElement(By.id("signIn")).click();
}}
Следующий класс CloudDriver. Что еще более важно при запуске отладки, код работает правильно.
public class CloudDriver {
protected WebDriver driver = null;
@BeforeSuite
public void setUP(){
driver = new FirefoxDriver();
driver.get("http://apps3.thecloudstream.com/");
}
@AfterSuite
public void Closing(){
driver.quit();
}
}
Вы пытались увеличить время ожидания до загрузки элементов? Это может происходить, потому что второй тест не знает состояния страницы, которое изменяется кликом первого теста и пытается выполнить описанные в нем операции. –
На самом деле страница загружается даже в кратчайшие сроки с помощью электронной почты и следующей кнопки. Но второй тест продолжает ждать поля электронной почты, а затем объявляет его не найденным. Но если я выполняю действие 2-го теста в методе первого теста. Все элементы найдены заполненными и успешно –