Перейти к содержимому

Alekssaf

Регистрация: 18 мая 2011
Offline Активность: 30 июл 2013 06:54
-----

Мои сообщения

В теме: Работа с RemoteWebDriver

16 июля 2012 - 07:42

Похоже разобрался сам. Не запустил ноды java -jar selenium-server-standalone-2.14.0.jar -role node -hub http://localhost:4444/grid/register.

В теме: PageObject + PageFactory

29 июня 2012 - 10:36

1. у вас тут ошибку не выдает? :)

SubMenu subMenu = PageFactory.initElements(driver, subMenu.class);

А должно, что здесь не так?

2. если правильно понял, вы не знаете как бы вам сделать так, чтобы LoggDefinition создавался через PageFactory в классе SubMenu. Вот вам решение - метод loggDefinition должен возвращать

public LoggDefinition getLoggDefinitionPage() {
     return PageFactory.initElements(driver, LoggDefinition.class);
}


Спасибо большое.

3. почитайте про "Code Conventions for the Java Programming Language" - вам это пригодится, т.к. читать ваш код сложно...


тут конечно согласен

4. почитайте по JAVA в принципе, с нуля - вам это тоже пригодится

А вот это уже жестоко

Еще раз спасибо.

В теме: Помогите сделать красиво

27 июня 2012 - 09:07

1. Читаем что написано про PageFactory:

we rely on the PageFactory to instantiate the instance of the PageObject. It does this by first looking for a constructor that takes "WebDriver" as its sole argument (public SomePage(WebDriver driver) {). If this is not present, then the default constructor is called. Sometimes, however, the PageObject depends on more than just an instance of the WebDriver interface.

Так уж получилось, что я не работаю с Селеном 2.х (поэтому лишь предполагаю в чем проблема), но могу предложить попробовать сделать один в один как написано в примерах: создавайт не FirefoxDriver, а WebDriver. Так же гляньте примеры по PageObject паттерну, а именно как объявляется driver в объекте страницы:

2. Лично я использую другой подход - вместо одного метода clickButton, написал бы два: clickLogoutButton() и clickLoginButton() - без параметров.
public void clickLogoutButton(){
logoutMenu.click();
}

public void clickLoginButton(){
logginMenu.click();
}

Спасибо, похоже он правда работает только с WebDriver.

А по второму пункту у меня вопрос, конечно же такой подход как у Вас избавить меня от проблемы передачи WebElement из теста, но тогда получается, что придется отказаться от универсальности методов и, если элементов на странице много, то получается либо уж очень много методов для каждого из элементов, либо дробить саму страницу на несколько классов , каждый из которых под определенные группы тестов? Может я что неправильно понимаю, кто , вообще, какой метод использует, поделитесь , пожалуйста.
Спасибо.

В теме: Помогите сделать красиво

27 июня 2012 - 07:20

Если используете аннотации, то как скажите, так и будет искать. Из примера:

@FindBy(how = How.NAME, using = "q")
private WebElement searchBox;

Вот как-то так все и работает.

Спасибо.
Но у меня остались еще два вопроса, помогите, пожалуйста.
Итак у меня есть класс страницы что-то типа

public class MainMenu {
@FindBy(xpath="//div[@id='id_MainMenu']//span[text()='logoutMenu']")
public WebElement logoutMenu;
@FindBy(how = How.XPATH, using = "//div[@id='id_MainMenu']//span[text()='logginMenu']")
public WebElement logginMenu;
public FirefoxDriver driver;
public MainMenu(FirefoxDriver driver) {
this.driver=driver;
}
public void clickButton (WebElement button){
button.click();
}

И класс с тестом JUnit
@Test
public void testMainmenu() throws Exception {
MainMenu mainmenu = PageFactory.initElements(driver, MainMenu.class);
// main menu
mainmenu.clickButton(mainmenu.logginMenu);

А теперь вопросы
1) Почему если в классе страницы есть конструктор, то ничего не работает, если конструктор убрать , то кнопки нажимаются, но как мне тогда передать туда driver?

2) mainmenu.clickButton(mainmenu.logginMenu); - mainmenu.logginMenu - Это нормальный стиль передачи параметра страницы из теста?

Спасибо.

В теме: Помогите сделать красиво

26 июня 2012 - 12:46


P.S. А может кто-нить подскажет где в инете почитать про Page factory? Спасибо.


http://code.google.c...iki/PageFactory


Скажите, пожалуйста, а я что -то неправильно или единственный существенный плюс это
If you use the PageFactory, you can assume that the fields are initialised. If you don't use the PageFactory, then NullPointerExceptions will be thrown if you make the assumption that the fields are already initialised.

но при этом еще и поиск элементов идет только по ID и Value? Спасибо.