Selenium WebDriver + TestNG кроссбраузерное тестирование

ВАМ ПОНРАВИТСЯ

16 Комментариев

  1. Олег:

    Добрый день. Все делал по примеру, запустил testng.xml, тест прошел успешно. Но, не запустился класс OpenPageTest. А если запустить этот класс отдельно, то выдает ошибку:
    Parameter ‘browser’ is required by BeforeTest on method getDriver but has not been marked @Optional or defined in C:\Users\Олег\.IdeaIC2017.2\system\temp-testng-customsuite.xml
    Заранее спасибо.

    • astest:

      Добрый день. Если делать как в примере, то запуск тестов возможен только через файл testng.xml. Должно работать.
      Если же запускать класс отдельно, то метод getDriver просто не видит значение параметра «browser», которое как раз таки передается ему из файла testng.xml. Для запуска тестов отдельно, вам нужно пометить параметр метода getDriver аннотацией @Optional и задать значение по умолчанию. Будет выглядеть так getDriver(@Optional(«chrome») String browser). Тогда ваши тесты будут просто запускаться в браузере Chrome.

  2. Олег:

    Спасибо, но я сделал немного по другому и у меня заработало.
    Перенес из класса «OprenPageTest» в «BaseTest» наш тестовый класс (openPage), сам класс «OprenPageTest» удалил, сделал ребилд и тесты прошли.
    Возможно, у меня с первого раза не вышло из за наследования ?

    • astest:

      Не видя код и структуру проекта, сложно определить в чем причина. Если вам интересно, вы можете отправить мне на почту скрины структуры проекта, код теста и содержимое файла testng.xml. Я посмотрю и мы разберемся в чем причина. Дело может быть в какой-то мелочи, но Java мелочей не прощает.
      Пример из статьи рабочий, так как проверен неоднократно. В нем нет ничего сложного.

  3. Олег:

    Спасибо, было бы очень хорошо. А на какую почту писать?

  4. Так что там было у Олега?

  5. Роман:

    Сделал аналогично описанному выше пример (только изменил сам тест). При запуске тесты упали с ошибкой. В классе BaseTest изменил аннотацию с @BeforeTest на @beforeClass — успешно выполнился тест в Chrome, но в FF почему-то упал с ошибкой.
    Буду благодарен за помощь.

    • astest:

      Добрый вечер.
      Чтобы определить в чем причина, нужно увидеть скрины с ошибками и вашим кодом. Можно выслать на почту aleksey.smiyan@gmail.com

      • Роман:

        Дело оказалось в драйвере для FF: скачал последнюю версию gecko и тест в FF выполнился успешно. Также в классе BaseTest изменил аннотацию @AfterTest на @AfterClass.
        Вот что значит, пренебрёг Вашим советом: «В случае если у вас что-то не работает, обязательно проверьте совместимость версий.» 🙂

  6. Сергей:

    С аннотациями @BeforeClass и @AfterClass выполняется, с последними версиями браузеров и драйверов. Тут всё ОК. Даже удалось добавить другие бразуреры (IE и Edge, так нужно для проекта). А как это масштабировать? Если создать на каждый test suite свой xml (именовать их не testng.xml, а [suit_name].xml), каждый из них отдельно запускается. Это нормально или это bad practice? И возможно ли запихать все необходимые test suits в один xml?

  7. Дмитрий:

    Добрый день.
    А у меня при запуске браузера при старте теста в адресной строке «data:,» вместо указанных «driver.get(«https://www.google.com»);»
    и соответственно падает в java.lang.NullPointerException
    скачал последнюю версию хром драйвера 2.45
    последняя версия селениум-жавы 3.141.59
    браузер на борту Version 71.0.3578.80 (Official Build) (64-bit)
    ОС: Linux Mint 18.2

    Почитал на Stack Overflow везде пишут обновить драйвер, но у меня и так последний (хотя попробовал и предыдущий 2.44)
    В какую сторону хоть искать проблему, подскажите пожалуйста?

    • Гриша:

      У меня похожая трабла. Когда делаю в BaseTest:
      protected static WebDriver driver;
      то работает. Оно, видимо, в дочернем классе как-то переопределяет переменную driver в null, если не указать static.
      Правда, мне такое решение не подходит.

    • Гриша:

      Тесты также срабатывают, если драйвер не делать статическим, но заменить @BeforeTest и @AfterTest на @BeforeMethod и @AfterMethod (или @BeforeClass и @AfterClass). Почему так значение передается — не знаю. Может это какое-то изменение в TestNG со времени написания статьи.

  8. Гриша:

    public class BaseTest {
    protected WebDriver driver;
    ……

    public String toString() {
    return «It is » + driver;
    }
    ……
    }

    public class OpenPageTest extends BaseTest {

    @Test
    public void openPage() {
    System.out.println(super.toString()); // Output: It is null
    …..
    }
    }

    • Гриша:

      Если же драйвер сделать статик, то аутпут будет:
      It is ChromeDriver: chrome on XP (b3f5fe1a326d8ec43b160923a1e0faeb)
      It is FirefoxDriver: firefox on WINDOWS (1f5cb3f7-a79b-4b7b-b83d-01ef4d953aa7)

Добавить комментарий для Andrey Отменить ответ

Ваш e-mail не будет опубликован. Обязательные поля помечены *