Утверждение всегда возвращает err (ожидалось, что 'a' будет равно 'a') - PullRequest
0 голосов
/ 18 октября 2018

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

...
<div class="price">12,45&nbsp;€</div>
...

Я создал этот небольшой тест для проверки значения строки:

import { t, Selector } from 'testcafe';
fixture `OfferPage`.page `https://www.verivox.de/applications/broadband/#/offer?i=eyJmaWx0ZXIiOltudWxsLDE2MDAwLDEsbnVsbCwiMDIyMSIsMSwxLDEsbnVsbCwxLDEsbnVsbCwtMSxudWxsLG51bGwsInByaWNlLWFzYyIsMixudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNl0sImRpYWxvZyI6W251bGxdLCJvZmZlckNyaXRlcmlhIjpbIjYxMzQ0NyIsIjE4MjkyIixudWxsLCIyNCIsMywyLCI1MDAwMCIsIjEwMDAwIixudWxsLG51bGwsMSxudWxsLG51bGwsbnVsbCwiMiIsMSxudWxsLCIwMjIxIixudWxsLG51bGwsbnVsbCxudWxsLG51bGwsMSw2LG51bGwsbnVsbCxudWxsXX0%3D`;
test('1', async () => {
    const string = Selector('div.price');
    await t.expect(string.innerText).eql('12,45 €');
});

Ошибка, которую я получаю в терминале, заключается в следующемone:

AssertionError: expected '12,45 €' to deeply equal '12,45 €'

Я действительно пытался найти решение, но либо я меняю определение с const в let и пытаюсь применить другие методы, все заканчивается ошибкой, с разными сообщениями об ошибках.Итак, как я мог разобраться, в приведенном выше случае?Спасибо!

РЕДАКТИРОВАТЬ : Спасибо за подсказки!Я отредактировал пост, потому что понял, что не упомянул, что уже попробовал то, что вы предлагали ...

let price = Selector('div').withAttribute('class', 'price');
const result = price.parent('div.centered-content effective-price-wrapper');
console.log(result);
await t.expect(result.innerText).eql('12,45 €');

err:

Cannot obtain information about the node because the specified selector does not match any node in the DOM tree.

еще одна попытка:

const string = await Selector('div.price')();
let pret = await Selector(string).innerText;
const rgx = /&nbsp;/gi;
await t.expect(pret.replace(rgx, '')).eql('12,45 €'.replace(rgx, ''));

err

 AssertionError: expected '12,45 €' to deeply equal '12,45 €'

У меня заканчиваются идеи здесь:)

Ответы [ 2 ]

0 голосов
/ 19 октября 2018

Эта проблема связана с неразрывным пробелом .

Следующее утверждение должно работать правильно в вашем сценарии:

await t.expect(string.innerText).eql('12,45\xa0€');
0 голосов
/ 18 октября 2018

Проблема с вашим конкретным контрольным примером заключается в том, что Testcafe не интерпретирует &nbsp; как обычный пробел.

Что будет работать, если вы скопируете 12,45 € из полученного сообщения об ошибкевставьте его в код как ожидаемое значение и все.

...