簡體   English   中英

Testcafe expect 如果使用 await 則通過,但如果方法鏈接則不通過

[英]Testcafe expect passes if await used but not if methods chained

拿這個 Testcafe 代碼:

test
    .page('https://testsite.com')
    ('button hidden after clicked', async t => {
        await t
            .expect(await Selector('button.cc-banner__button-accept').visible).ok({ timeout: 5000 })
            .setNativeDialogHandler(() => true)
            .click(await Selector('button.cc-banner__button-accept'))
            .expect(await Selector('button.cc-banner__button-accept').visible).notOk({ timeout:1000 });

當 Testcafe 運行時以上失敗。

但是,下面的代碼通過了:

test
    .page('https://testsite.com')
    ('button hidden after clicked', async t => {
        await t
            .expect(await Selector('button.cc-banner__button-accept').visible).ok({ timeout: 5000 })
            .setNativeDialogHandler(() => true)
            .click(await Selector('button.cc-banner__button-accept'));
        await t
            .expect(await Selector('button.cc-banner__button-accept').visible).notOk({ timeout:1000 });

為什么是這樣? 有任何想法嗎?

JS 在鏈式編譯時為Selector計算真實的元素值。 (JS以這種方式工作)。 這意味着您評估的第一個測試計算await Selector('button.cc-banner__button-accept').visible對整個鏈只有一次,然后這個值用於檢查。 由於您只獲得一次值,因此測試如預期的那樣失敗了。 您應該在斷言中的Selector之前刪除內部的await ,如您在 CLI 警告中所見。

在此處輸入圖像描述

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM