getText () возвращает объект, а не String (используя selenium-cucumber-js) - PullRequest
1 голос
/ 01 мая 2019

При попытке подтвердить результат из getText () продолжайте получать ошибки, которые указывают, что getText () возвращает объект вместо строки.

Я довольно новичок в автоматизированном тестировании, но мой (опытный) коллега получает то же самое, и мы взглянули на него из JS-разработчика, который также озадачен.

Использование selenium-cucumber-js в качестве тестовой среды. (это единственная среда, в которой нам удалось поработать в сети клиента).

Я добавил console.log в тесте, чтобы доказать, что текст можно извлечь, он записывается нормально, но утверждение все равно не выполняется.

Также попробовал все различные предложения в этом вопросе, но все еще не может заставить его работать Транспортир: element.getText () возвращает объект, а не строку

Страница Obj:

zeroResults: function () {
    return driver.wait(until.elementsLocated(by.css(...)), 10000)
        .then(function () {
            return driver.findElement(by.css(...))
                .getText().then(function (searchOutcome) {
                   console.log(searchOutcome); //this was just to prove the text can be found
                    return searchOutcome;

// Я также пробовал варианты этого (например, удаление окончательного возврата)

Step Def:

this.Then(/^I should see text "Zero results found"$/, function () {
    var searchOutcome = page.xx.zeroResults();
    expect(searchOutcome).to.equal('Zero results found');

Ожидайте прохождения теста, но вместо этого получите:

AssertionError: ожидается, что {Object (flow_, stack_, ...)} будет равен «найдено нулевых результатов»

Если я изменю утверждение на:

return Promise.resolve (searchOutcome) .should.eventually.equal ('Обнаружен нулевой результат');

Я получаю:

TypeError: Невозможно прочитать свойство 'в конце концов' из неопределенного

Это лишь некоторые из попыток, но все попытки имеют схожие результаты. Это затрагивает более одного пользователя, было доказано на нескольких тестовых примерах и использует разные утверждения / ожидания.

Любая помощь приветствуется.

Ответы [ 2 ]

0 голосов
/ 02 мая 2019

Похоже, что это было вызвано тем, что обещания не были выполнены.Посмотрев на него другой разработчик, он изменил код следующим образом, и он сработал:

Page Obj (без изменений)

zeroResults: function () {
    return driver.wait(until.elementsLocated(by.css(...)), 10000)
        .then(function () {
            return driver.findElement(by.css(...))
                .getText().then(function (searchOutcome) {
                   console.log(searchOutcome);
                    return searchOutcome;

Step Def (дополнено дополнительным console.log)

this.Then(/^I should see text "Zero results found"$/, function () {
    var searchOutcome = page.xx.zeroResults();
    console.log(typeof (searchOutcome));
    searchOutcome.then(function (value) {
    console.log(value);
    expect(value).to.equal('Zero results found');

У нас есть проблема с некоторыми другими шагами, поэтому попробуем добавить .then и посмотреть, работает ли это.

Спасибо за все ответы на этот вопрос.

0 голосов
/ 02 мая 2019

Попробуйте ниже.

Страница объекта:

zeroResults: function () {
    return driver.wait(until.elementsLocated(by.css(...)), 10000)
        .then(function () {
            return driver.findElement(by.css(...))
                .getText().then((searchOutcome) => {
                    return searchOutcome;
                   });

Step Def:

this.Then(/^I should see text "Zero results found"$/, function () {
    var searchOutcome = page.xx.zeroResults();
    #debug here and see what is the value in searchOutCome
    expect(searchOutcome).to.equal('Zero results found');
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...