Хобрук: Ваш путь к мастерству в программировании

Веб-драйвер Selenium и TESTNG

Почему команды Selenium WebDriver не отображаются на моем @Test(priority=2)? Каждый раз, когда я ввожу команды Selenium Web Driver в тесте @Test(priority=1), он работает только с другим тестом, используя -

public class TestingTestNG {
@Test(priority=1)
public void TestingTestNG() throws InterruptedException{

    // Import FireFox Driver
    WebDriver driver = new FirefoxDriver();


    // Open up Sand Page
    driver.get("****");

    // Enter Usename and Password

    // User
    driver.findElement(By.id("userId")).sendKeys("****");
    Thread.sleep(3000);

    // Password
    driver.findElement(By.id("password")).sendKeys("****");
    Thread.sleep(3000);

    // Click Login Button
    driver.findElement(By.id("loginButton")).click();
}

@Test(priority=2)
public void test2(){
    driver.

Выпадающий список для драйвера. не отображается и отображает только класс... Есть предложения?



Ответы:


1

Вам нужно объявить свой драйвер вне @Test.

 public class TestingTestNG {

WebDriver driver = new FirefoxDriver();

@Test(priority=1)
public void TestingTestNG() throws InterruptedException{ 
    // Open up Sand Page
    driver.get("****");

    // Enter Usename and Password

    // User
    driver.findElement(By.id("userId")).sendKeys("****");
    Thread.sleep(3000);

    // Password
    driver.findElement(By.id("password")).sendKeys("****");
    Thread.sleep(3000);

    // Click Login Button
    driver.findElement(By.id("loginButton")).click();
}

@Test(priority=2)
public void test2(){
    driver.    // here you will get your options.
15.06.2016

2

Неправильная область действия вашего driver приводит к тому, что попробуйте изменить область следующим образом:

public class TestingTestNG {

// Import FireFox Driver
WebDriver driver = new FirefoxDriver();

@Test(priority=1)
public void TestingTestNG() throws InterruptedException{

    // Open up Sand Page
    driver.get("****");


    ....
}

@Test(priority=2)
public void test2(){
     driver.   //and now you shall get what you are expecting
}

Редактировать -

driver.findElement(By.xpath("//element x-path")).click()

должен работать в том же синтаксисе

14.06.2016
  • добро пожаловать. есть ли у нас этот выбранный ответ, и тогда мы завершаем ветку? 14.06.2016
  • Извините, еще один вопрос... раскрывающийся список появляется, но каждый раз, когда я пытаюсь ввести код 'driver.findelement(By.Xpath(***)).click();' он красным подчеркивает элемент поиска и не выполняет команду, когда я запускаю ее на TestNG.. есть ли причина, почему она не работает? @нулевой указатель 14.06.2016
  • @user6401108 user6401108 - обновил ответ, используйте тот же синтаксис findElement — это метод, By.xpath — другой, убедитесь, что имена чувствительны к регистру. 14.06.2016
  • Я правильно понял синтаксис, но каждый раз, когда я пытаюсь его ввести... драйвер синего цвета вместо коричневого, а findElement подчёркивается красным и предлагает метод findElement((searchcontext)) в типе by неприменим 15.06.2016

  • 3

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

    • Переменные области класса: переменные, к которым вы хотите иметь доступ из любого места в классе Java.

      открытый класс User { private String userName; }

    • Переменные области действия метода. Некоторые переменные можно сделать временными, и желательно, чтобы они использовались только для одного метода.

      public void sum(int a, int b){ int result = a + b; }

    • Переменные области цикла: переменные, созданные внутри цикла, являются локальными по отношению к вершине. Это означает, что как только вы выйдете из цикла, переменная больше не будет доступна.

      public void showNumbers(){ for (int i = 0; i‹ 10: i++){ System.out.println("count:" + i); } }

    в этом случае ваше объявление переменной драйвера должно быть переменной класса.

    Я использую эту страницу, чтобы взять примеры и определения: https://www.java-made-easy.com/variable-scope.html

    25.02.2019
    Новые материалы

    Основы принципов S.O.L.I.D, Javascript, Git и NoSQL
    каковы принципы S.O.L.I.D? Принципы SOLID призваны помочь разработчикам создавать надежные, удобные в сопровождении приложения. мы видим пять ключевых принципов. Принципы SOLID были разработаны..

    Как настроить Selenium в проекте Angular
    Угловой | Селен Как настроить Selenium в проекте Angular Держите свое приложение Angular и тесты Selenium в одной рабочей области и запускайте их с помощью Mocha. В этой статье мы..

    Аргументы прогрессивного улучшения почти всегда упускают суть
    В наши дни в кругах веб-разработчиков много болтают о Progressive Enhancement — PE, но на самом деле почти все аргументы с обеих сторон упускают самую фундаментальную причину, по которой PE..

    Введение в Джанго Фреймворк
    Схема «работать умно, а не усердно» В этой и последующих статьях я познакомлю вас с тем, что такое фреймворк Django и как создать свое первое приложение с помощью простых и понятных шагов, а..

    Настольный ПК как «одно кольцо, чтобы править всеми» домашних компьютеров
    Вид после 9 месяцев использования С настольных компьютеров все началось, но в какой-то момент они стали «серверами», и мы все перешли на ноутбуки. В прошлом году я столкнулся с идеей настольных..

    Расширенные методы безопасности для VueJS: реализация аутентификации без пароля
    Руководство, которое поможет вам создавать безопасные приложения в долгосрочной перспективе Безопасность приложений часто упускается из виду в процессе разработки, потому что основная..

    стройный-i18следующий
    Представляем стройную оболочку для i18next. Эта библиотека, основанная на i18next, заключает экземпляр i18next в хранилище svelte и отслеживает события i18next, такие как languageChanged,..