Импортировать огурец.api.DataTable; не может быть решен

Я пытаюсь автоматизировать DataTables в Cucumber, где я написал соответствующую функцию и определение шага для того же. Eclipse предлагает импортировать io.cucumber.datatable.DataTable; и когда я использую метод raw(), eclipse выдает ошибку, говорящую: «Метод raw() не определен для типа DataTable»

Feature : Then user enters username and password
| mngr193115 | edytadA |

Определение шага:

@Then("^user enters username and password$")
    public void user_enters_username_and_password(DataTable credentials) {
        //driver.findElement(By.linkText("ACCOUNT")).click();
        List<List<String>> data = credentials.raw();
        driver.findElement(By.xpath("//input[@type='text']")).sendKeys();       
        driver.findElement(By.name("password")).sendKeys(password);
    }

Ниже мой файл POM.xml

 <dependencies>
<!-- https://mvnrepository.com/artifact/io.cucumber/cucumber-java -->
<dependency>
    <groupId>io.cucumber</groupId>
    <artifactId>cucumber-java</artifactId>
    <version>4.3.0</version>
</dependency>

<!-- https://mvnrepository.com/artifact/io.cucumber/cucumber-jvm -->
<dependency>
    <groupId>io.cucumber</groupId>
    <artifactId>cucumber-jvm</artifactId>
    <version>4.3.0</version>
    <type>pom</type>
</dependency>

<!-- https://mvnrepository.com/artifact/io.cucumber/cucumber-junit -->
<dependency>
    <groupId>io.cucumber</groupId>
    <artifactId>cucumber-junit</artifactId>
    <version>4.3.0</version>
    <scope>test</scope>
</dependency>
<!-- https://mvnrepository.com/artifact/io.cucumber/cucumber-jvm-deps -->
<dependency>
    <groupId>io.cucumber</groupId>
    <artifactId>cucumber-jvm-deps</artifactId>
    <version>1.0.6</version>
    <scope>provided</scope>
</dependency>
<!-- https://mvnrepository.com/artifact/net.masterthought/cucumber-reporting -->
<dependency>
    <groupId>net.masterthought</groupId>
    <artifactId>cucumber-reporting</artifactId>
    <version>4.6.0</version>
</dependency>
<!-- https://mvnrepository.com/artifact/io.cucumber/cucumber-core -->
<dependency>
    <groupId>io.cucumber</groupId>
    <artifactId>cucumber-core</artifactId>
    <version>3.0.2</version>
</dependency>
<!-- https://mvnrepository.com/artifact/io.cucumber/gherkin -->
<dependency>
    <groupId>io.cucumber</groupId>
    <artifactId>gherkin</artifactId>
    <version>5.1.0</version>
</dependency>
<dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>3.8.1</version>
        <scope>test</scope>
    </dependency>
<dependency>
    <groupId>org.seleniumhq.selenium</groupId>
    <artifactId>selenium-java</artifactId>
     <version>3.141.59</version>
 </dependency>   
<!-- https://mvnrepository.com/artifact/io.cucumber/cucumber-picocontainer -->
<dependency>
    <groupId>io.cucumber</groupId>
    <artifactId>cucumber-picocontainer</artifactId>
    <version>4.3.0</version>
    <scope>test</scope>
</dependency>
</dependencies>
</project>

Ожидается - решить проблемы с импортом и импортировать огурец.api.DataTable;

Фактически - Eclipse предлагает импортировать import io.cucumber.datatable.DataTable; для DataTable, и когда я импортирую то же самое, я не могу использовать метод raw().

Измените аргументы метода с DataTable на List<List<String>>. Огурец справится с этим автоматически. Или вы можете использовать asLists() вместо raw().

Grasshopper 10.05.2019 00:52

Я изменил его на asLists(), и это сработало. Но является ли это стандартным способом написания кода для DataTables в огурце? table.raw()-> Превратить таблицу в массив массивов table.asLists()-> Возвращает ячейки таблицы

Chaitanya Maligi 10.05.2019 01:25

Лучше изменить аргументы метода на List<List<String>>. Позвольте огурцу обрабатывать преобразования.

Grasshopper 10.05.2019 01:44
Не удалось выполнить цель org.apache.maven.plugins
Не удалось выполнить цель org.apache.maven.plugins
Опишу, что когда я только начинал изучать Maven, у меня не получалось компилировать и упаковывать.
Blibli Automation Journey - Как захватить сетевой трафик с помощью утилиты HAR в Selenium 4
Blibli Automation Journey - Как захватить сетевой трафик с помощью утилиты HAR в Selenium 4
Если вы являетесь веб-разработчиком или тестировщиком, вы можете быть знакомы с Selenium, популярным инструментом для автоматизации работы...
0
3
5 019
4
Перейти к ответу Данный вопрос помечен как решенный

Ответы 4

I. вариант

https://mvnrepository.com/artifact/io.cucumber/datatable-dependencies/1.1.12https://mvnrepository.com/artifact/io.cucumber/datatable/1.0.3

<!-- https://mvnrepository.com/artifact/io.cucumber/datatable-dependencies -->
<dependency>
    <groupId>io.cucumber</groupId>
    <artifactId>datatable-dependencies</artifactId>
    <version>1.1.12</version>
</dependency>



<!-- https://mvnrepository.com/artifact/io.cucumber/datatable -->
<dependency>
    <groupId>io.cucumber</groupId>
    <artifactId>datatable</artifactId>
    <version>1.0.3</version>
</dependency>

II. вариант Попробуйте обновить зависимости огурца-ядра и огурца java до последних версий: https://mvnrepository.com/artifact/io.cucumber/cucumber-core/4.3.1

<dependency>
    <groupId>io.cucumber</groupId>
    <artifactId>cucumber-core</artifactId>
    <version>4.3.1</version>
</dependency>

https://mvnrepository.com/artifact/io.cucumber/огурец-java

<!-- https://mvnrepository.com/artifact/io.cucumber/cucumber-java -->
<dependency>
    <groupId>io.cucumber</groupId>
    <artifactId>cucumber-java</artifactId>
    <version>4.3.1</version>
</dependency>

И после этого сделайте реимпорт maven. Надеюсь это поможет

Здравствуйте @eugene спасибо за ваши предложения. Я пытаюсь использовать банки, а также обновляю зависимости maven огурца-ядра и огурца-java. Но проблема все еще сохраняется. я должен попробовать использовать внешние банки?

Chaitanya Maligi 09.05.2019 23:43
Ответ принят как подходящий

Главный пункт: Люди столкнулись с несколькими ошибками (упомянутыми ниже), поскольку они смешивают прямые и транзитивные зависимости. Поэтому мы не будем смешивать прямые и транзитивные зависимости, особенно их версии! Это может привести к непредсказуемому результату.

  • Импорт огурца.api.junit не может быть разрешен
  • java.lang.NoClassDefFoundError: корнишон/IGherkinDialectProvider
  • импортировать огурец.api.DataTable; не может быть решен

Решение: Удалите огурец-ява, сердцевина огурца, огурец-JVM-депс, корнишон и июнь. Они являются транзитивными зависимостями и будут предоставлены вашими зависимостями. Вы можете добавить ниже набор минимальных зависимостей огурца.

<dependency>
    <groupId>io.cucumber</groupId>
    <artifactId>cucumber-junit</artifactId>
    <version>4.3.0</version>
    <scope>test</scope>
</dependency>

<dependency>
    <groupId>io.cucumber</groupId>
    <artifactId>cucumber-picocontainer</artifactId>
    <version>4.3.0</version>
    <scope>test</scope>
</dependency>

Особенность: Затем пользователь вводит имя пользователя и пароль | мнгр193115 | Эдитада |

Из вашего вопроса то, что было указано выше, было файлом функции, который вы использовали. Я согласен с тем, что вы должны выполнить импорт для данных, и перед этим вы можете изменить файл функции на приведенный ниже, если нет.

Особенность: проверить UN и Pwd

Сценарий: Название сценария

Затем пользователь вводит имя пользователя и пароль

| мнгр193115 | Эдитада |

Если вы используете io.cucumber вместо импорта cucumber.api, используйте метод cells(), который является альтернативой методу raw() в пакете io.cucumber.

Пример:

List<List<String>> testData = data.cells();

System.out.println(testData.get(0).get(0)); //displays the first element of dataTable //of 0th row and 0th column

Другие вопросы по теме