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

Техники локализации плавающих дефектов
онлайн, начало 19 апреля
Тестирование безопасности
онлайн, начало 21 апреля
Тестирование мобильных приложений
онлайн, начало 21 апреля
Автоматизатор мобильных приложений
онлайн, начало 21 апреля
Фотография

Объясните пожалуйста принцип работы @FindBy для Select

@FindBy Select

  • Авторизуйтесь для ответа в теме
Сообщений в теме: 11

#1 Deformator

Deformator

    Новый участник

  • Members
  • Pip
  • 10 сообщений

Отправлено 25 августа 2014 - 11:47

Столкнулся с такой проблемой. Постоянно выхватываю NullPointerException если использую такую интерпретацию:

@FindBy (xpath = "//*[@id=\"ddlProjectLabel\"]") private Select workTypeSelect;

в методе указываю 

 workTypeSelect.selectByVisibleText("Design"); 

Если же пишу

@FindBy private Select workTypeSelect;

и в методе

workTypeSelect = new Select(driver.findElement(By.xpath("//*[@id=\"ddlProjectLabel\"]")));
workTypeSelect.selectByVisibleText("Design"); 

то все отлично отрабатывает.
Объясните пожалуйста нубу, что не так? Ведь на всех форумах почему-то указан именно 1-й вариант, он конечно и более удобный.
 
http://internetka.in...fielddecorator/
http://habrahabr.ru/...ex/blog/158787/
 
PS: c полями для ввода, кнопками и т.д. все отлично работает. Я бы не задавал вопрос, с учетом того, что для селекта в отличии от элементов нужно создавать экземпляр класса, но почему на всех форумах пишут про 1-й вариант и почему же он не работает у меня. Заранее спасибо.


  • 0

- Ты программист?

- Нет, я тестировщик.

- А кто это?


#2 barancev

barancev

    Администратор

  • Admin
  • PipPipPipPipPipPip
  • 6 853 сообщений
  • ФИО:Алексей Баранцев
  • Город:Россия, Москва


Отправлено 25 августа 2014 - 12:02

Надеюсь, Вы обратили внимание на то, что в первой статье использовался самодельный декоратор полей, а во второй статье Select -- это совсем другой класс, свой собственный, а не включённый в стандартный дистрибутив Selenium? (впрочем, и декоратор там тоже нестандартный :) )


  • 1

Алексей Баранцев
Тренинги для тестировщиков (тестирование производительности, защищенности, тест-дизайн, автоматизация):
Линейка тренингов по Selenium


#3 Deformator

Deformator

    Новый участник

  • Members
  • Pip
  • 10 сообщений

Отправлено 25 августа 2014 - 12:20

Большое спасибо за ответ. Не обратил конечно, спешил, выхватил кусок кода и зашел в тупик. Еще раз спасибо.


  • 0

- Ты программист?

- Нет, я тестировщик.

- А кто это?


#4 Deformator

Deformator

    Новый участник

  • Members
  • Pip
  • 10 сообщений

Отправлено 25 августа 2014 - 13:23

Решил конечно через одно место проблему, но код сократил. Дописал в классе метод

 

//метод для возврата экземпляров класса для селектов
    private Select getPageSelectElement(WebElement select){
        return new Select(select);
    }

Может есть, что-то оптимальней?


  • 0

- Ты программист?

- Нет, я тестировщик.

- А кто это?


#5 user12

user12

    Специалист

  • Members
  • PipPipPipPipPip
  • 854 сообщений
  • ФИО:Виктор
  • Город:Минск


Отправлено 25 августа 2014 - 14:06

а просто создать метод  selectByVisibleText нет  ?  :)

private Select getPageSelectElement

и почему он приватный ?


  • 0

#6 wret

wret

    Активный участник

  • Members
  • PipPip
  • 124 сообщений
  • Город:Москва

Отправлено 25 августа 2014 - 16:30

Решил конечно через одно место проблему, но код сократил. Дописал в классе метод

 

//метод для возврата экземпляров класса для селектов
    private Select getPageSelectElement(WebElement select){
        return new Select(select);
    }

Может есть, что-то оптимальней?

Не делайте так

Человек, который будет читать код после вас, будет совсем не рад

Создание экземпляров классов стандартное, его и придерживайтесь


  • 0

#7 asolntsev

asolntsev

    Новый участник

  • Members
  • Pip
  • 63 сообщений
  • ФИО:Андрей Солнцев
  • Город:Таллинн

Отправлено 25 августа 2014 - 21:35

Попробуйте библиотеку Selenide.

С ней всё получается гораздо проще и короче:

 


  • 0

#8 mazik7

mazik7

    Новый участник

  • Members
  • Pip
  • 63 сообщений
  • ФИО:Мазик
  • Город:Красноярск

Отправлено 26 августа 2014 - 01:10

 

Попробуйте библиотеку Selenide.

С ней всё получается гораздо проще и короче:

 

 

Как по мне - сначала лучше разобраться с WebDriver, и только потом уже переходить на что-то подобное)


  • 0

:smile:


#9 barancev

barancev

    Администратор

  • Admin
  • PipPipPipPipPipPip
  • 6 853 сообщений
  • ФИО:Алексей Баранцев
  • Город:Россия, Москва


Отправлено 26 августа 2014 - 09:02

Selenide не решает проблему разделения структуры страниц (page objects) и кода.

 

Если уж что советовать -- так это HtmlElements, который упоминался топикстартером, ссылка на вторую статью.


  • 0

Алексей Баранцев
Тренинги для тестировщиков (тестирование производительности, защищенности, тест-дизайн, автоматизация):
Линейка тренингов по Selenium


#10 Deformator

Deformator

    Новый участник

  • Members
  • Pip
  • 10 сообщений

Отправлено 02 сентября 2014 - 11:27

Спасибо за советы  :smile:


  • 0

- Ты программист?

- Нет, я тестировщик.

- А кто это?


#11 asolntsev

asolntsev

    Новый участник

  • Members
  • Pip
  • 63 сообщений
  • ФИО:Андрей Солнцев
  • Город:Таллинн

Отправлено 21 октября 2014 - 11:34

Selenide не решает проблему разделения структуры страниц (page objects) и кода.

 

Если уж что советовать -- так это HtmlElements, который упоминался топикстартером, ссылка на вторую статью.

 

Selenide очень даже решает и эту проблему, причём максимально гибко.

 

http://ru.selenide.o...ge-objects.html


  • 0

#12 barancev

barancev

    Администратор

  • Admin
  • PipPipPipPipPipPip
  • 6 853 сообщений
  • ФИО:Алексей Баранцев
  • Город:Россия, Москва


Отправлено 21 октября 2014 - 11:54

Давайте будем честны, в этом примере логика и локаторы как раз идут вперемешку.

 

Это немного другая вариация PageObject, где предлагается вообще скрыть элементы, а наружу предоставить только набор функций. Хорошая вариация, но -- другая.

 

Не поймите неправильно, ничего не хочу сказать плохого в адрес Selenide, как раз со своими задачами он отлично справляется. Но не стоит приписывать ему магические свойства :)


  • 0

Алексей Баранцев
Тренинги для тестировщиков (тестирование производительности, защищенности, тест-дизайн, автоматизация):
Линейка тренингов по Selenium



Selenium 2.0: стартовый уровень
онлайн
Программирование на Java для тестировщиков
онлайн
Автоматизация функционального тестирования
онлайн
Selenium WebDriver: полное руководство
онлайн




Темы с аналогичным тегами @FindBy, Select

Количество пользователей, читающих эту тему: 0

0 пользователей, 0 гостей, 0 анонимных

Яндекс.Метрика
Реклама на портале