Testcafe, утверждают, что в столбцах существуют строки, проверяющие данные - PullRequest
1 голос
/ 28 января 2020

Мне нужно сделать утверждение testcafe, и я хочу проверить, если этот '.economi c -row' содержит текст 'E2E локальные записи' И 'DKK 10.00'.

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

Пример:

        .expect(Selector('.economic-row').withText('E2E local entries').find('div').withText('DKK 10.00').count).eql(1);

Первая часть селектора работает. Selector('.economic-row').withText('E2E local entries') У меня просто проблемы во второй части, я пытаюсь найти столбец, содержащий значение 'DKK 10.00'.

<mat-row class="economic-row mat-row ng-star-inserted" mattooltipposition="above" role="row" style="touch-action: none; user-select: none; -webkit-user-drag: none; -webkit-tap-highlight-color: rgba(0, 0, 0, 0);">
<!---->
<mat-cell class="mat-cell cdk-column-select mat-column-select mat-table-sticky ng-star-inserted" role="gridcell" style="left: 0px; position: sticky; z-index: 1;">
    <div>
        <mat-checkbox class="mat-checkbox mat-accent mat-checkbox-checked" id="mat-checkbox-1300">
            <label class="mat-checkbox-layout" for="mat-checkbox-1300-input">
                <div class="mat-checkbox-inner-container mat-checkbox-inner-container-no-side-margin">
                    <input class="mat-checkbox-input cdk-visually-hidden" type="checkbox" id="mat-checkbox-1300-input" tabindex="0" aria-checked="true">
                    <div class="mat-checkbox-ripple mat-ripple" matripple="">
                        <div class="mat-ripple-element mat-checkbox-persistent-ripple"></div>
                    </div>
                    <div class="mat-checkbox-frame"></div>
                    <div class="mat-checkbox-background">
                        <svg xml:space="preserve" class="mat-checkbox-checkmark" focusable="false" version="1.1" viewBox="0 0 24 24">
                            <path class="mat-checkbox-checkmark-path" d="M4.1,12.7 9,17.6 20.3,6.3" fill="none" stroke="white"></path>
                        </svg>
                        <div class="mat-checkbox-mixedmark"></div>
                    </div>
                </div><span class="mat-checkbox-label"><span style="display:none">&nbsp;</span></span>
            </label>
        </mat-checkbox>
    </div>
</mat-cell>
<mat-cell class="mat-cell cdk-column-dueDate mat-column-dueDate ng-star-inserted" role="gridcell">
    <div class="full-width non-breaking-line">
        <!----><span mattooltipposition="above" aria-describedby="cdk-describedby-message-203" cdk-describedby-host="" class="ng-star-inserted" style="touch-action: none; user-select: none; -webkit-user-drag: none; -webkit-tap-highlight-color: rgba(0, 0, 0, 0);"><mat-icon class="mat-icon-14 inline-block vertical-align margin-bottom-5 mat-icon notranslate mat-icon-no-color" role="img" aria-hidden="true"><svg id="Layer_1" data-name="Layer 1" xmlns="http://www.w3.org/2000/svg" width="100%" height="100%" viewBox="0 0 112 112" fit="" preserveAspectRatio="xMidYMid meet" focusable="false"><path d="M56,2.77A53.23,53.23,0,1,0,109.26,56,53.3,53.3,0,0,0,56,2.77ZM56,99.5A43.5,43.5,0,1,1,99.53,56,43.56,43.56,0,0,1,56,99.5Z" style="fill:red"></path><path d="M58,27.15A4.87,4.87,0,0,0,53.08,32V56H37.5a4.87,4.87,0,1,0,0,9.73H58a4.87,4.87,0,0,0,4.86-4.87V32A4.87,4.87,0,0,0,58,27.15Z" style="fill:red"></path></svg></mat-icon></span>
        <!----><span mattooltipposition="above" class="margin-left-2" style="touch-action: none; user-select: none; -webkit-user-drag: none; -webkit-tap-highlight-color: rgba(0, 0, 0, 0);"><!----><span class="ng-star-inserted"> 05/12/2019 </span>
        <!---->
        </span>
    </div>
</mat-cell>
<mat-cell class="mat-cell cdk-column-supplierName mat-column-supplierName ng-star-inserted" role="gridcell">
    <div class="display-flex">
        <!----><span mattooltipposition="above" aria-describedby="cdk-describedby-message-204" cdk-describedby-host="" style="touch-action: none; user-select: none; -webkit-user-drag: none; -webkit-tap-highlight-color: rgba(0, 0, 0, 0);"> E2E local entries </span></div>
</mat-cell>
<mat-cell class="mat-cell cdk-column-invoice mat-column-invoice ng-star-inserted" role="gridcell">
    <div>
        <!---->
        <!----><span class="ng-star-inserted">8080</span></div>
</mat-cell>
<mat-cell class="align-right mat-cell cdk-column-voucher mat-column-voucher ng-star-inserted" role="gridcell">
    <div>
        <!---->
        <!----><span class="ng-star-inserted">9</span></div>
</mat-cell>
<mat-cell class="align-right mat-cell cdk-column-amount mat-column-amount ng-star-inserted" role="gridcell">
    <!---->
    <div class="ng-star-inserted">
        <!---->
        <div mattooltipposition="above" aria-describedby="cdk-describedby-message-205" cdk-describedby-host="" class="ng-star-inserted" style="touch-action: none; user-select: none; -webkit-user-drag: none; -webkit-tap-highlight-color: rgba(0, 0, 0, 0);"> DKK 10.00 </div>
        <!---->
        <!---->
    </div>
    <!---->
</mat-cell>
<mat-cell class="mat-cell cdk-column-recipientFee mat-column-recipientFee ng-star-inserted" role="gridcell">
    <div>
        <mat-checkbox class="margin-left-30 checkbox-mini mat-checkbox mat-accent mat-checkbox-disabled" id="mat-checkbox-1301">
            <label class="mat-checkbox-layout" for="mat-checkbox-1301-input">
                <div class="mat-checkbox-inner-container mat-checkbox-inner-container-no-side-margin">
                    <input class="mat-checkbox-input cdk-visually-hidden" type="checkbox" id="mat-checkbox-1301-input" disabled="" tabindex="-1" aria-checked="false">
                    <div class="mat-checkbox-ripple mat-ripple" matripple="">
                        <div class="mat-ripple-element mat-checkbox-persistent-ripple"></div>
                    </div>
                    <div class="mat-checkbox-frame"></div>
                    <div class="mat-checkbox-background">
                        <svg xml:space="preserve" class="mat-checkbox-checkmark" focusable="false" version="1.1" viewBox="0 0 24 24">
                            <path class="mat-checkbox-checkmark-path" d="M4.1,12.7 9,17.6 20.3,6.3" fill="none" stroke="white"></path>
                        </svg>
                        <div class="mat-checkbox-mixedmark"></div>
                    </div>
                </div><span class="mat-checkbox-label"><span style="display:none">&nbsp;</span>
                <!---->
                </span>
            </label>
        </mat-checkbox>
    </div>
</mat-cell>
<mat-cell class="mat-cell cdk-column-supplierEmail mat-column-supplierEmail ng-star-inserted" role="gridcell">
    <div mattooltipposition="above" aria-describedby="cdk-describedby-message-206" cdk-describedby-host="" style="touch-action: none; user-select: none; -webkit-user-drag: none; -webkit-tap-highlight-color: rgba(0, 0, 0, 0);">
        <mat-checkbox class="checkbox-mini mat-checkbox mat-accent mat-checkbox-disabled" id="mat-checkbox-1302">
            <label class="mat-checkbox-layout" for="mat-checkbox-1302-input">
                <div class="mat-checkbox-inner-container mat-checkbox-inner-container-no-side-margin">
                    <input class="mat-checkbox-input cdk-visually-hidden" type="checkbox" id="mat-checkbox-1302-input" disabled="" tabindex="-1" aria-checked="false">
                    <div class="mat-checkbox-ripple mat-ripple" matripple="">
                        <div class="mat-ripple-element mat-checkbox-persistent-ripple"></div>
                    </div>
                    <div class="mat-checkbox-frame"></div>
                    <div class="mat-checkbox-background">
                        <svg xml:space="preserve" class="mat-checkbox-checkmark" focusable="false" version="1.1" viewBox="0 0 24 24">
                            <path class="mat-checkbox-checkmark-path" d="M4.1,12.7 9,17.6 20.3,6.3" fill="none" stroke="white"></path>
                        </svg>
                        <div class="mat-checkbox-mixedmark"></div>
                    </div>
                </div><span class="mat-checkbox-label"><span style="display:none">&nbsp;</span><span mattooltipposition="above" style="touch-action: none; user-select: none; -webkit-user-drag: none; -webkit-tap-highlight-color: rgba(0, 0, 0, 0);"><!----></span></span>
            </label>
        </mat-checkbox>
    </div>
</mat-cell>
<mat-cell class="text-center mat-cell cdk-column-status mat-column-status ng-star-inserted" role="gridcell">
    <div>
        <!---->
        <!----><span class="ng-star-inserted"><!----><!----><mat-icon class="mat-icon-18 inline-block mat-icon notranslate mat-icon-no-color ng-star-inserted" mattooltipposition="above" role="img" svgicon="n1_new_invoice" aria-hidden="true" aria-describedby="cdk-describedby-message-207" cdk-describedby-host="" style="touch-action: none; user-select: none; -webkit-user-drag: none; -webkit-tap-highlight-color: rgba(0, 0, 0, 0);"><svg id="Layer_1" data-name="Layer 1" xmlns="http://www.w3.org/2000/svg" width="100%" height="100%" viewBox="0 0 43 43" fit="" preserveAspectRatio="xMidYMid meet" focusable="false"><path d="M21.5.5a21,21,0,1,0,21,21A21,21,0,0,0,21.5.5ZM33.24,16.11,21,30.49l-.08.09s0,0,0,0h0a1.78,1.78,0,0,1-.26.22l-.05,0a2.69,2.69,0,0,1-.29.16l-.06,0a1.58,1.58,0,0,1-.31.09h0l-.34,0h0l-.35,0-.11,0L18.87,31,18.74,31l-.19-.1-.13-.09-.11-.08,0-.06-.06,0-7.89-7.84A1.94,1.94,0,0,1,13,20l6.4,6.36L30.29,13.6a1.94,1.94,0,0,1,3,2.51Z" style="fill:#32d2a2"></path></svg></mat-icon><!----></span>
        <!---->
    </div>
</mat-cell>

1 Ответ

1 голос
/ 30 января 2020

Когда я запускаю ваш пример, я получаю следующую ошибку AssertionError: expected 2 to deeply equal 1

Если у вас такая же ошибка, ее причина в вашем селекторе. Взгляните на этот код:

<div class="ng-star-inserted">
    <div mattooltipposition="above" aria-describedby="cdk-describedby-message-205" cdk-describedby-host=""
         class="ng-star-inserted"
         style="touch-action: none; user-select: none; -webkit-user-drag: none; -webkit-tap-highlight-color: rgba(0, 0, 0, 0);">
        DKK 10.00
    </div>
</div>

В вашей строке два элемента с текстом DKK 10.00. Один вложен в другой. Чтобы исправить тест, вы можете изменить свой тестовый код следующим образом:

await t.expect(Selector('.economic-row').withText('E2E local entries').find('div').find('div').withText('DKK 10.00').count).eql(1);
...