Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

C# InitElements



Software-Testing.Ru - портал тестировщиков  

Новые темы форума тестировщиков


C# InitElements
2014-08-29 18:09

Господа, прошу совета, можно ли реализовать такое на C#?

BasePage

Скрытый текст

public class BasePage {

    private final String BASE_URL = "http://myurl.ru";
    protected Driver driver;
    
    [@FindBy(css = ".selector")
    public BaseElement myElement;

    protected BasePage(String url) {
        driver = Console.driver;
        driver.goToURL(BASE_URL + url);
        PageFactory.initElements(new FieldDecorator(driver), this);

        myElement.click();
    }
}


BaseElement
Скрытый текст

public class BaseElement {

    protected WebElement element;
    protected Driver driver;

    protected BaseElement(WebElement element) {
        this.element = element;
        driver = Console.driver;
    }

    /**
        custom methods
    */
}


FieldDecorator
Скрытый текст

public class FieldDecorator extends DefaultFieldDecorator {

    public FieldDecorator(SearchContext searchContext) {
        super(new DefaultElementLocatorFactory(searchContext));
    }

    @Override
    public Object decorate(ClassLoader loader, Field field) {
        /**
         *    somecode
         */
        return super.decorate(loader, field);
    }

    @SuppressWarnings("unchecked")
    private Class<BaseElement> decoratableClass(Field field) {
        /**
         *    somecode
         */
        if (BaseElement.class.isAssignableFrom(decoratableClass)) {
            return (Class<BaseElement>) decoratableClass;
        }
        else {
            return null;
        }
    }

    protected BaseElement createElement(ClassLoader loader,
                                     ElementLocator locator,
                                     Class<BaseElement> decoratableClass) {
       /**
        *  somecode
        */
        WebElement proxy = proxyForLocator(loader, locator);
        return ElementWrapper.createInstance(decoratableClass, proxy);
    }

    @SuppressWarnings("unchecked")
    protected List<BaseElement> createList(ClassLoader loader,
                                        ElementLocator locator,
                                        Class<BaseElement> decoratableClass) {
        /**
         *    somecode
         */
        return elements;
    }

}


ElementWrapper
Скрытый текст

public class ElementWrapper {

    public static BaseElement createInstance(Class<BaseElement> decoratableClass, 
                                                                       WebElement element) {
        try {
            return decoratableClass.getConstructor(WebElement.class).newInstance(element);
        } catch (Exception e) {
            throw new AssertionError(
                    "WebElement can't be represented as " + decoratableClass
            );
        }
    }
}


Или расскажите/дайте почитать, как инициализировать собственные элементы.
Или придётся реализовывать подобным образом?

И как вообще люди работают с .Net Selenium, если половина классов sealed?



Postmortem — Анализ дефектов
2014-08-30 20:48

Народ, есть ли у кого внятная инструкция о том, как можно проводить Postmortem анализ дефектов?

 

Буквально методичка, инструкция, что-то в этом роде.

 

Или рассуждения о том, когда такой анализ будет эффективным, а когда можно не трепыхаться.



© 2010 | Software-Testing.Ru


В избранное