Разделы презентаций


Реализация паттернов PageElement и PageObject в тестировании Web клиента

Кому подойдёт описываемый подход У вас приложение с интерфейсом, похожим на десктопный. Есть части интерфейса, которые присутствуют на экране всегда.Есть части интерфейса, которые часто повторяются на разных страницах.Фронтенд вашего приложения написан

Слайды и текст этой презентации

Слайд 1Как это сделано сейчас и как это могло бы быть
Реализация

паттернов PageElement и PageObject в тестировании Web клиента DirectumRX

Как это сделано сейчас и как это могло бы бытьРеализация паттернов PageElement и PageObject в тестировании Web

Слайд 2Кому подойдёт описываемый подход
У вас приложение с интерфейсом, похожим

на десктопный.

Есть части интерфейса, которые присутствуют на экране всегда.

Есть

части интерфейса, которые часто повторяются на разных страницах.

Фронтенд вашего приложения написан на современном фреймворке.

Кому подойдёт описываемый подход У вас приложение с интерфейсом, похожим на десктопный. Есть части интерфейса, которые присутствуют

Слайд 3Пример интерфейса

Пример интерфейса

Слайд 4Как это сделано сейчас

Как это сделано сейчас

Слайд 5Класс страницы:
public abstract class PageObject
{
protected RemoteWebDriver driver;


public virtual Ribbon MainRibbon {
get {

var r = this.driver.S(By.Id("main-ribbon"),
TimeSpan.FromSeconds(10));
return new Ribbon(this.driver, r);
}
}
public virtual Ribbon PopupRibbon {
get {
var r = this.driver.S(By.ClassName("popup"),
TimeSpan.FromSeconds(10));
return new Ribbon(this.driver, r);
}
}
}
Класс страницы:public abstract class PageObject {  protected RemoteWebDriver driver;  public virtual Ribbon MainRibbon {

Слайд 6Класс ленты:

public class Ribbon : RemoteWebElement
{
public

Ribbon(IWebDriver driver, IWebElement webElement) : base(driver, webElement.GetSecretElementID()) { }

protected By ButtonLocator => By.CssSelector(".button.toggle-button");

public virtual IEnumerable Buttons => this.SS(this.ButtonLocator);

public void ClickButton(string name)
{
var action = this.Button.First(a => a.Text.IsStringEqual(name));
action.ClickElement();
}
}

Слайд 7Недостатки:
Поиск элементов выполняется медленно, потому что:
Поиск в драйвере быстрее
Приходится искать

сначала элемент ленты, потом элемент кнопки

Возможно StaleElementReferenceException сразу в нескольких

местах
Недостатки:Поиск элементов выполняется медленно, потому что:Поиск в драйвере быстрееПриходится искать сначала элемент ленты, потом элемент кнопкиВозможно StaleElementReferenceException

Слайд 8Альтернатива
Альтернатива, сынок – это утки!

АльтернативаАльтернатива, сынок – это утки!

Слайд 9Класс страницы:

public class PageObjectNew
{
protected readonly RemoteWebDriver

driver;

protected virtual string MainRibbonSelector = "#context-ribbon";

public

virtual RibbonNew MainRibbon => new RibbonNew (this.driver, this.MainRibbonSelector);
}

Слайд 10Класс ленты:

public class RibbonNew
{
private RemoteWebDriver driver;

private readonly string baseSelector;

public RibbonNew(RemoteWebDriver driver, string

locator) {
this.driver = driver;
this.baseSelector = locator;
}

private string ButtonSelector => baseSelector + ” button.button_flat");

public void ClickButton(string name) {
var thisButtonSelector = this.ButtonSelector + $“[textContent='{name}']";
this.ClickElement(3, thisButtonSelector);
}


Класс ленты: public class RibbonNew {  private RemoteWebDriver driver;  private readonly string baseSelector;  public

Слайд 11Класс ленты, продолжение:

private void ClickElement(int _maxAttempts, string selector)

{
var count = 0;
var

maxAttempts = _maxAttempts;

while(true) {
try {
var element = driver.S(By.CssSelector(selector));
element.Click();
break;
}

catch (StaleElementReferenceException) {
if(++count == maxAttempts) throw;
}
}
}
}
Класс ленты, продолжение: private void ClickElement(int _maxAttempts, string selector)  {   var count = 0;

Слайд 12Элементы ищутся быстро, т.к. напрямую в браузере и только один

раз.

Исключается StaleElementReferenceException.

Код тестов становится проще


Преимущества:

Элементы ищутся быстро, т.к. напрямую в браузере и только один раз.Исключается StaleElementReferenceException.Код тестов становится прощеПреимущества:

Слайд 13

Вопросы?

Вопросы?

Слайд 14Dmitry Abashin
Automated QA engineer


development office
Ufa city
Abashin_DV@directum.ru

Dmitry AbashinAutomated QA engineer

Обратная связь

Если не удалось найти и скачать доклад-презентацию, Вы можете заказать его на нашем сайте. Мы постараемся найти нужный Вам материал и отправим по электронной почте. Не стесняйтесь обращаться к нам, если у вас возникли вопросы или пожелания:

Email: Нажмите что бы посмотреть 

Что такое TheSlide.ru?

Это сайт презентации, докладов, проектов в PowerPoint. Здесь удобно  хранить и делиться своими презентациями с другими пользователями.


Для правообладателей

Яндекс.Метрика