Я не могу получить правильные элементы

Я нажимаю кнопку сортировки, получаю все цены, и мне нужно убедиться, что элементы были правильно отсортированы по ценам. Поэтому мне нужно получить значение цены = "377", значение цены = "1288", значение цены = "1688" и т. д., но я не могу получить правильные элементы.

<div class="ssl-price-box">
    <price value="377" units="/yr" class="lg-price ng-isolate-scope">
        <span class="price">
            <span class="currency-icon">$</span>
            <span class="integer ng-binding">3.</span>
            <span class="cent ng-binding">77</span>
            <span class="units">/yr</span>
        </span>
    </price>
    <!-- ngIf: product.prices.max.certIsPromo -->
</div>
<div class="ssl-content">
    <div class="ssl-price-box">
        <price value="1288" units="/yr" class="lg-price ng-isolate-scope">
            <span class="price">
                <span class="currency-icon">$</span>
                <span class="integer ng-binding">12.</span>
                <span class="cent ng-binding">88</span>
                <span class="units">/yr</span>
            </span>
        </price>

Я пробовал искать css, className, xpath, repearet, я думал, что если они все одинаковые, повторитель будет работать. Мой код:

const allSSLList = $$('.ssl-price-box');
const newAllSSLList = allSSLList.sort((a, b)=>a-b));

expect(await allSSLList).toBe(massiveOfElements)

Мне нужно получить только цены, например. «3,77», «12,88», «16,88» и т. д., а затем проверьте, сортируются ли они по ASC, но у меня есть все цены, даже старые. Мне нужно добраться только куда

<span class="price">
    <price value="377" units="/yr" class="lg-price ng-isolate-scope">

Ожидается [ 3,77 долл. США в год, 12,88 долл. США в год 26,99 долл. США в год, 16,88 долл. США в год 31,99 долл. США в год, 19,66 долл. США в год 35,88 долл. США в год, 30,88 долл. США в год 44,99 долл. США в год, 38,88 долл. США в год 95,99 долл. США/ YR», «59,99 долл. США в год», «68,88 долл. США в год, 138,99 долл. США в год», «70,88 долл. США в год, 96,99 долл. США в год», «78,19 долл. США в год», «78,19 долл. США в год», «134,99 долл. США в год», «138,88 долл. США в год, 215,89 долл. США». /YR' ] быть 'что-то'. Куча:


person Max Volobuev    schedule 10.09.2019    source источник
comment
Вы используете неправильные локаторы. В вашем DOM нет «ng-приложения»   -  person work_ishaan    schedule 10.09.2019
comment
какой локатор мне использовать?   -  person Max Volobuev    schedule 10.09.2019
comment
Я бы сказал, что вопрос слишком широкий. Вот почему вот мой общий ответ - назначьте elementArrauyFinder переменной, которая указывает на все элементы, которые вам нужны (вы можете проверить это в инструментах разработки браузера), .getText() из них ИЛИ .getAttribute("attribute") в зависимости от того, что вам нужно, и только тогда вы можете отсортировать эти значения и сравнить, соответствует ли отсортированный массив несортированному   -  person Sergey Pleshakov    schedule 10.09.2019
comment
спасибо, прежде всего мне нужно извлечь правильные данные, потому что я получаю все цены, даже те, которые мне не нужны, я описываю проблему ниже, спасибо!   -  person Max Volobuev    schedule 11.09.2019


Ответы (1)


Судя по предоставленному HTML, селектор CSS div.ssl-price-box > price предоставит вам все необходимые ценовые элементы. Оттуда вы можете использовать .getAttribute() для извлечения value для каждого элемента как "377", "1288" и т. д. Тогда вам нужно преобразовать эти строковые значения в числа, скопировать этот массив, сортировать второй массив, а затем сравните с первым списком, чтобы убедиться, что два списка отсортированы.

person JeffC    schedule 10.09.2019
comment
Благодарю вас! Я сделал все, что вы написали element.all(by.css('div.ssl-price-box›price')); но я получаю результат не ТОЛЬКО из ‹span class=price› ‹price value=377 unit=/yr class=lg-price ng-isolate-scope›, но и из ‹price ng-if=product.prices.max.certIsPromo value =21589 единиц=/год old-price= class=base-price ng-scope ng-isolate-scope›‹span class=price old-price›‹span class=currency-icon›$‹/span›‹span class= integer ng-binding›215.‹/span›‹span class=cent ng-binding›89‹/span›‹span class=units›/год‹/span›‹span class=line-through› мне нужен фильтр ? - person Max Volobuev; 11.09.2019
comment
Какие цены вам НЕ нужны? Обновите свой вопрос, указав HTML-код цен, которые вам нужны, а затем приведите пример цены, которая вам не нужна. Оттуда мы сможем придумать локатор, который отфильтрует те, которые вам не нужны. - person JeffC; 11.09.2019
comment
я создаю новую проблему, я думаю, это будет проще stackoverflow.com/questions/57878473/ - person Max Volobuev; 11.09.2019