0
describe("Purge all", function() {    
    it('Purge all', () => {      
        CachePurgePage.open(PARTNER_ID, ACCOUNT_ID, CONFIGURATION_ID);
        const label = $('[class = "css-1av0y7f-SidebarLinkTitle ezsph7p1"]');

        browser.waitUntil(function(){
            return label.isClickable()
        }, 6000, "Element is not clickable");
        label.click();

        browser.waitUntil(function(){
            return $$('[class ="css-1rqefwa-LabelOutput e9gmw1r4"]')[1].isDisplayed();
        }, 6000, "Element is not displayed")
        $$('[class ="css-1rqefwa-LabelOutput e9gmw1r4"]')[1].click();

        browser.waitUntil(function(){
            return $$('[class *= "Row-StyledTableRow"]')[1].isDisplayed();
        }, 6000, "Element is not clickable")

        const firstTR = CachePurgePage.tableTasksInfo[0];
        const internalTDs = firstTR.$$('[class = "css-zr137n-Cell eveacmn0"]');
        expect(internalTDs[1]).toHaveText('2');

大家好!我的第一次 WDIO 测试,不难理解我是新手。所以我遇到了一个有趣的问题。当我使用 browser.pause() 时测试工作正常,但如果我只尝试实现 $element.waitForClickable().click() 一切都会出错。测试不会等待条件并尝试找到一个元素然后单击它。当然,他没有找到任何东西,因为尚未下载所需的页面,只需单击“取消定义”元素,导致测试以错误结束。所以我尝试了 browser.waitUntil() 并且发生了一些意想不到的步骤。首先浏览器搜索“label = $('[class = "css-1av0y7f-SidebarLinkTitle ezsph7p1"]')”然后点击它。终端输出显示一切正常。然后开始搜索“$$('[class =" css-1rqefwa-LabelOutput e9gmw1r4"]')[1]" 并且找不到它导致 IRL 上一个元素上的 click() 没有发生。我不明白为什么它会这样工作。我有 94​​ chromedriver、7.14 wdio 和 14 node.js,并在 85 chromedriver、6.7 wdio 和 12 node.js 上尝试过,没有任何区别

4

1 回答 1

0

在此处查看示例:https ://webdriver.io/docs/api/browser/waitUntil/

你会注意到你缺少async/await符号。

基本上browser.waitUntil返回一个Promise()你只是忽略的。

由于 NodeJs v16 同步。不推荐使用模式:同步。 模式警告


尝试这个:

describe("Purge all", function() {    
    it('Purge all', async () => {      
        CachePurgePage.open(PARTNER_ID, ACCOUNT_ID, CONFIGURATION_ID);
        const label = $('[class = "css-1av0y7f-SidebarLinkTitle ezsph7p1"]');

        await browser.waitUntil(function(){
            return label.isClickable()
        }, 6000, "Element is not clickable");
        label.click();

        await browser.waitUntil(function(){
            return $$('[class ="css-1rqefwa-LabelOutput e9gmw1r4"]')[1].isDisplayed();
        }, 6000, "Element is not displayed")
        $$('[class ="css-1rqefwa-LabelOutput e9gmw1r4"]')[1].click();

        await browser.waitUntil(function(){
            return $$('[class *= "Row-StyledTableRow"]')[1].isDisplayed();
        }, 6000, "Element is not clickable")

        const firstTR = CachePurgePage.tableTasksInfo[0];
        const internalTDs = firstTR.$$('[class = "css-zr137n-Cell eveacmn0"]');
        expect(internalTDs[1]).toHaveText('2');
    //...

于 2021-10-20T14:01:41.777 回答