2014-12-27 3 views
2

Как создать собственный TypifiedElement для его использования внутри HtmlElement?Как создать собственный TypifiedElement

Я создал собственный CustomElement

public class YesNoRadio extends TypifiedElement { 

    protected YesNoRadio(WebElement wrappedElement) { 
     super(wrappedElement); 
    } 

.... // some other methods here 

} 

И пытался использовать его, но получил исключение на моей базовой странице в то время инициализации элементов

PageFactory.initElements(new HtmlElementDecorator(driver), this); 

Мой исключение

ru.yandex.qatools.htmlelements.exceptions.HtmlElementsException: java.lang.NoSuchMethodException: No such accessible constructor on object: com.mycompany.testing.htmlelements.company.element.YesNoRadio 
     at ru.yandex.qatools.htmlelements.loader.decorator.HtmlElementFactory.createTypifiedElementInstance(HtmlElementFactory.java:51) 
     at ru.yandex.qatools.htmlelements.loader.decorator.HtmlElementDecorator.decorateTypifiedElement(HtmlElementDecorator.java:102) 
     at ru.yandex.qatools.htmlelements.loader.decorator.HtmlElementDecorator.decorate(HtmlElementDecorator.java:66) 
     at org.openqa.selenium.support.PageFactory.proxyFields(PageFactory.java:115) 
     at org.openqa.selenium.support.PageFactory.initElements(PageFactory.java:107) 
     at ru.yandex.qatools.htmlelements.loader.decorator.HtmlElementDecorator.decorateHtmlElement(HtmlElementDecorator.java:115) 
     at ru.yandex.qatools.htmlelements.loader.decorator.HtmlElementDecorator.decorate(HtmlElementDecorator.java:70) 
     at org.openqa.selenium.support.PageFactory.proxyFields(PageFactory.java:115) 
     at org.openqa.selenium.support.PageFactory.initElements(PageFactory.java:107) 
     at com.mycompany.testing.cds.PageBase.<init>(PageBase.java:46) 

Где моя ошибка и как исправить свой собственный TypifiedElement? Thanks

ответ

1

Из stacktrace, вероятно, класс, из которого вы создаете экземпляр YesNoRadio, находится в другом пакете. Поэтому вам нужно объявить конструктор последнего как public

public YesNoRadio(WebElement wrappedElement) { 
+0

Все работы, как ожидается, когда я изменить конструктор 'public' – Funker

+0

Спасибо за ответ, это 100% правильно - вы должны иметь открытый конструктор в ваших элементов , – artkoshelev