SlideShare a Scribd company logo
Делаем тесты лучше
Юлия Ашаева
Автотесты от Selenium IDE
Плюсы
Быстрый старт
Просто получить
Минусы
Нечитаемо
Хрупкие (зависят
от верстки)
Тяжело
поддерживать
Приложение 
Test data

Application driver

Test logic
Domain Specific Language
Test logic
DSL driver
Application driver
Selenium plugin for Intellij IDEA
Settings → Plugins →Browse repositories
Look for Selenium plugin
http://perfect-test.com/index.php/ru/instruments-rus-menu/15-selenium-plugin-rus
public abstract class Page {
protected WebDriver driver;
public Page(WebDriver driver) {
this.driver = driver;
}
public abstract void open();
protected void type(WebElement webElement, String text) {
webElement.clear();
webElement.sendKeys(text);
}
public boolean isElementPresent(WebElement element) {
try {
element.isDisplayed();
return true;
} catch (NoSuchElementException e) {
return false;
}
}
}
public class LoginPage extends Page {
@FindBy(className="login")
public WebElement linkSignIn;
@FindBy(id="username")
WebElement fieldUsername;
@FindBy(id="password")
WebElement fieldPassword;
@FindBy(name="login")
WebElement buttonLogin;
public LoginPage(WebDriver driver) {
super(driver);
}
public HomePage loginAs(UserData user) {
linkSignIn.click();
type(fieldUsername, user.name);
type(fieldPassword, user.password);
buttonLogin.click();
return PageFactory.initElements(driver, HomePage.class);
}
@Override
public void open() {
driver.get(ConfigProperties.getProperty("login.url"));
}
}
public class BasicTestCase {
protected static WebDriver driver;
protected WebDriver getWebDriver() {
if (driver == null) {
driver = new FirefoxDriver();
driver.manage().timeouts().implicitlyWait(
Long.parseLong(ConfigProperties.getProperty("imp.wait")),
TimeUnit.SECONDS);
}
return driver;
}
@AfterTest
public void tearDown() throws Exception {
driver.quit();
}
}
public class TestLogin extends BasicTestCase{
public final static UserData user = new UserData("jashaeva", "helloWorld");
private HomePage homePage =
PageFactory.initElements(getWebDriver(), HomePage.class);
private LoginPage loginPage =
PageFactory.initElements(getWebDriver(), LoginPage.class);
@Test
public void testLogin() throws Exception {
loginPage.open();
homePage = loginPage.loginAs(user);
assertTrue(homePage.isLoggedIn());
homePage.logout();
assertTrue(homePage.isLoggedOut());
}
}
DSL
Что дальше?
PageElement
Form
Checkbox
Button
Select

More Related Content

PDF
PayPal's NemoJS and Applitools Eyes - Visual Testing with Node.js
PDF
Стажировка 2016-08-04 01 Денис Нелюбин. Шифрование и безопасность
PDF
Cтажировка 2016-08-02 02 Юлия Ашаева. Инструменты тестировщика
PDF
Стажировка 2016-07-27 02 Денис Нелюбин. PostgreSQL и jsonb
PDF
Стажировка 2016-08-11 01 Юлия Ашаева. Техники тест-анализа
PPTX
QA Fes 2016. Роман Якимчук. Продвинутое тестирование состояний и переходов
PPT
Тестирование требований и документации
PPTX
QA Fes 2016. Артем Быковец. Как выживать тестировщику в Agile среде
PayPal's NemoJS and Applitools Eyes - Visual Testing with Node.js
Стажировка 2016-08-04 01 Денис Нелюбин. Шифрование и безопасность
Cтажировка 2016-08-02 02 Юлия Ашаева. Инструменты тестировщика
Стажировка 2016-07-27 02 Денис Нелюбин. PostgreSQL и jsonb
Стажировка 2016-08-11 01 Юлия Ашаева. Техники тест-анализа
QA Fes 2016. Роман Якимчук. Продвинутое тестирование состояний и переходов
Тестирование требований и документации
QA Fes 2016. Артем Быковец. Как выживать тестировщику в Agile среде

More from SmartTools (6)

PDF
Стажировка 2016-07-14 02 Евгений Тарасенко. JavaScript
PDF
Стажировка 2016-07-12 02 Денис Нелюбин. Web, HTTP, TCP/IP
PPTX
Стажировка 2016-07-08 01 Евгений Тюменцев. S.O.L.I.D.
PPTX
Стажировка 2016-07-07 02 Евгений Тюменцев. Акторная модель
PDF
Стажировка 2016-07-06 03 Евгений Тарасенко. Основы HTML и CSS (часть 1).
PDF
Стажировка 2016-07-06 02 Денис Нелюбин. Linux и git.
Стажировка 2016-07-14 02 Евгений Тарасенко. JavaScript
Стажировка 2016-07-12 02 Денис Нелюбин. Web, HTTP, TCP/IP
Стажировка 2016-07-08 01 Евгений Тюменцев. S.O.L.I.D.
Стажировка 2016-07-07 02 Евгений Тюменцев. Акторная модель
Стажировка 2016-07-06 03 Евгений Тарасенко. Основы HTML и CSS (часть 1).
Стажировка 2016-07-06 02 Денис Нелюбин. Linux и git.
Ad

Recently uploaded (6)

PPTX
Madison dsfnsd dslsf sada;sdmas;ds;dls.pptx
PDF
Cold positive punishment of the student سزادانی ئەرێنی ساردی قوتابی.pdf
PDF
15 AUG 2025 PS 15 AUG 2025 PS 15 AUG 2025 PS
PDF
Materi seni rupa untuk sekolah dasar materi tentang seni rupa
PDF
فورمولر عمومی مضمون فزیک برای همه انجنیران
PPTX
Tahfidz Qur’an TIMING tampa musik bagian 2.pptx
Madison dsfnsd dslsf sada;sdmas;ds;dls.pptx
Cold positive punishment of the student سزادانی ئەرێنی ساردی قوتابی.pdf
15 AUG 2025 PS 15 AUG 2025 PS 15 AUG 2025 PS
Materi seni rupa untuk sekolah dasar materi tentang seni rupa
فورمولر عمومی مضمون فزیک برای همه انجنیران
Tahfidz Qur’an TIMING tampa musik bagian 2.pptx
Ad

Стажировка 2016-08-04 02 Юлия Ашаева. Делаем тесты лучше

  • 2. Автотесты от Selenium IDE Плюсы Быстрый старт Просто получить Минусы Нечитаемо Хрупкие (зависят от верстки) Тяжело поддерживать
  • 4. Domain Specific Language Test logic DSL driver Application driver
  • 5. Selenium plugin for Intellij IDEA Settings → Plugins →Browse repositories Look for Selenium plugin http://perfect-test.com/index.php/ru/instruments-rus-menu/15-selenium-plugin-rus
  • 6. public abstract class Page { protected WebDriver driver; public Page(WebDriver driver) { this.driver = driver; } public abstract void open(); protected void type(WebElement webElement, String text) { webElement.clear(); webElement.sendKeys(text); } public boolean isElementPresent(WebElement element) { try { element.isDisplayed(); return true; } catch (NoSuchElementException e) { return false; } } }
  • 7. public class LoginPage extends Page { @FindBy(className="login") public WebElement linkSignIn; @FindBy(id="username") WebElement fieldUsername; @FindBy(id="password") WebElement fieldPassword; @FindBy(name="login") WebElement buttonLogin; public LoginPage(WebDriver driver) { super(driver); } public HomePage loginAs(UserData user) { linkSignIn.click(); type(fieldUsername, user.name); type(fieldPassword, user.password); buttonLogin.click(); return PageFactory.initElements(driver, HomePage.class); } @Override public void open() { driver.get(ConfigProperties.getProperty("login.url")); } }
  • 8. public class BasicTestCase { protected static WebDriver driver; protected WebDriver getWebDriver() { if (driver == null) { driver = new FirefoxDriver(); driver.manage().timeouts().implicitlyWait( Long.parseLong(ConfigProperties.getProperty("imp.wait")), TimeUnit.SECONDS); } return driver; } @AfterTest public void tearDown() throws Exception { driver.quit(); } }
  • 9. public class TestLogin extends BasicTestCase{ public final static UserData user = new UserData("jashaeva", "helloWorld"); private HomePage homePage = PageFactory.initElements(getWebDriver(), HomePage.class); private LoginPage loginPage = PageFactory.initElements(getWebDriver(), LoginPage.class); @Test public void testLogin() throws Exception { loginPage.open(); homePage = loginPage.loginAs(user); assertTrue(homePage.isLoggedIn()); homePage.logout(); assertTrue(homePage.isLoggedOut()); } }
  • 10. DSL