Всем привет,
есть слайды, передвигающиеся каждые 2-3 секунды, необходимо выбрать нужны и проверить на наличие в нём элементов.
Сделал в Selenium IDE , перевёл в Java Webdriver -> запустил, работает (Прим 1)
////////////////////////////Прим 1
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.openqa.selenium.*;
import org.openqa.selenium.firefox.FirefoxDriver;
import java.util.concurrent.TimeUnit;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.fail;
public class test {
private WebDriver driver;
private String baseUrl;
private boolean acceptNextAlert = true;
private StringBuffer verificationErrors = new StringBuffer();
@Before
public void setUp() throws Exception {
driver = new FirefoxDriver();
baseUrl = "http://www..com/";
driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);
}
@Test
public void test123() throws Exception {
driver.get(baseUrl + "/");
driver.findElement(By.xpath("//div[@id='hero-slider']/div[2]/div[2]/div/a[7]/span[2]")).click();
assertEquals("experience the ", driver.findElement(By.xpath("//div[@id='hero-slider']/div/div[3]/div/p[2]/a/span")).getText());
assertEquals("", driver.findElement(By.cssSelector("img[alt=\"The Logo Hero\"]")).getText());
driver.findElement(By.xpath("//div[@id='hero-slider']/div/div[3]/div/p[2]/a/span")).click();
try {
assertEquals("The - West End in | The ", driver.getTitle());
} catch (Error e) {
verificationErrors.append(e.toString());
}
}
@After
public void tearDown() throws Exception {
driver.quit();
String verificationErrorString = verificationErrors.toString();
if (!"".equals(verificationErrorString)) {
fail(verificationErrorString);
}
}
private boolean isElementPresent(By by) {
try {
driver.findElement(by);
return true;
} catch (NoSuchElementException e) {
return false;
}
}
private boolean isAlertPresent() {
try {
driver.switchTo().alert();
return true;
} catch (NoAlertPresentException e) {
return false;
}
}
private String closeAlertAndGetItsText() {
try {
Alert alert = driver.switchTo().alert();
String alertText = alert.getText();
if (acceptNextAlert) {
alert.accept();
} else {
alert.dismiss();
}
return alertText;
} finally {
acceptNextAlert = true;
}
}
}
///////////////
Попытался преобразовать
//////////////////// Прим 2
@FindBy(xpath = ("//div[@id='hero-slider']/div[2]/div[2]/div/a[7]/span[2]"))
WebElement 1_slide;
@FindBy(xpath = ("//div[@id='hero-slider']/div[2]/div[2]/div/a[7]/span[2]"))
WebElement 2_exp;
public void Marylebone() throws Exception
{
1_slide.click();
Assert.assertEquals("experience the ", driver.findElement(By.xpath("//div[@id='hero-slider']/div/div[3]/div/p[2]/a/span")).getText());
Assert.assertEquals("", driver.findElement(By.cssSelector("img[alt=\"The Logo Hero\"]")).getText());
2_exp.click();
try
{
Assert.assertEquals("The - West End in | The ", driver.getTitle());
} catch (Error e)
{
verificationErrors.append(e.toString());
}
}
....
private boolean isElementPresent(org.openqa.selenium.By by)
{
try
{
driver.findElement(by);
return true;
} catch (NoSuchElementException e)
{
return false;
}
}
private boolean isAlertPresent()
{
try
{
driver.switchTo().alert();
return true;
} catch (NoAlertPresentException e)
{
return false;
}
}
private String closeAlertAndGetItsText()
{
try
{
Alert alert = driver.switchTo().alert();
String alertText = alert.getText();
if (acceptNextAlert)
{
alert.accept();
} else
{
alert.dismiss();
}
return alertText;
} finally
{
acceptNextAlert = true;
}
}
Даже первое действие не выполняется со слайдом…
что 1_slide.click(); ,
что через driver.findElement(By.xpath("//div[@id=‘hero-slider’]/div[2]/div[2]/div/a[7]/span[2]")).click();
может где-то ошибку допустил, как обьяснить программе, что нужно найти номер слайда и нажать а дальше уже проверять на наличие внутри элементов?