Новая строка в datatable gherkin / cucumber

У меня есть эта таблица данных в моем сценарии с огурцом:

| name        | value
| Description | one \n two \n three |

Я хочу, чтобы значения отображались в текстовом поле следующим образом:

one
two
three

Потому что мне нужно выделить их в список. Итак, мой актуальный вопрос: можно ли использовать символы новой строки в одной строке или есть лучший способ подойти к этому?

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

WebDriverException: unknown error: Runtime. evaluate threw exception: SyntaxError: Invalid or unexpected token

Обновлено еще раз: Я использую немного необычного кода для доступа к значению, поскольку это элемент p, и это обычно невозможно:

js.executeScript("document.getElementsByTagName('p')[0].innerHTML = ' " + row.get("value") + " ' ");

Это работает для других строк, возможно, потому, что я сейчас использую \ n?

Что вы имеете в виду под словом «лучше»?

Andrei Suvorkov 10.08.2018 14:47

лучше / другим способом, любым способом, который поможет мне получить результат

Audiosleef 10.08.2018 14:48

Как сейчас, должно работать. Код менять не нужно

Andrei Suvorkov 10.08.2018 14:49

WebDriverException: неизвестная ошибка: время выполнения. оценить выброшенное исключение: SyntaxError: недопустимый или неожиданный токен

Audiosleef 10.08.2018 14:53

Не могли бы вы поделиться кодом, который у вас есть?

Andrei Suvorkov 10.08.2018 14:56

Я отредактировал свой пост с помощью метода, который читает данные

Audiosleef 10.08.2018 15:05

Что возвращает row.get("value")?

Andrei Suvorkov 10.08.2018 15:11

все, что находится в столбце «значение» для соответствующего столбца «имя»

Audiosleef 10.08.2018 15:12

У меня отлично работает i.stack.imgur.com/Nc8cP.png

Andrei Suvorkov 10.08.2018 15:15

может быть, потому что вы набираете его в самом внутреннем HTML? Я пробовал по-твоему '/ * один \ nдва \ nтри * /'. Теперь он не вылетает, но тоже ничего не показывает

Audiosleef 10.08.2018 15:21
0
10
1 098
1

Ответы 1

Вы можете попробовать такой способ:

WebDriver driver = new ChromeDriver();
driver.get("https://stackoverflow.com/questions/51786797/newline-in-datatable-gherkin-cucumber/51787544#51787544");
Thread.sleep(3000); // pause to wait until page loads

String s = "SOME<br>WORDS";

JavascriptExecutor js = (JavascriptExecutor) driver;
js.executeScript("document.getElementsByTagName('div')[0].innerHTML = '" + s + "';");

Выход:

SOME 
WORDS

Итак, основная идея - использовать тег <br> в качестве разделителя новой строки.

В вашем случае это будет так:

| name        | value
| Description | one<br>two<br>three |

и код будет:

// make sure, that row.get("value") returns a string
js.executeScript("document.getElementsByTagName('p')[0].innerHTML = ' " + row.get("value") + " ' "); 

Я нашел решение, пожалуйста, посмотрите

Andrei Suvorkov 10.08.2018 15:43

Извините за задержку, был в отпуске. Я скопировал код сверху, и он игнорирует линии перегиба.

Audiosleef 20.08.2018 08:44

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