首页 文章

需要帮助识别testcafe中的元素

提问于
浏览
2

我是自动化测试和编码的新手 . 我在我的一个项目中使用testcafe来自动化功能测试 .

在其中一个网页中,有一个字段只接受数字值,如果输入任何字母数字值,则会显示错误消息 .

作为验证的一部分,我需要捕获此错误消息 .

我在这里遇到的问题是我无法确定它在DOM中的哪个元素 .

例如,可以考虑使用gmail用户名,并在我们尝试输入无效用户消息时收到错误消息 .

这就是DOM对于该领域的样子

<div class="flex-content space-100 space-large-reset ">
<label for="uid">Unique ID Number</label>
<input type="password" id="uid" maxlength="9" value="123js" class="abyss-textinput abyss-form-invalid">
<div class="abyss-error-message">Please enter a valid Unique ID Number.</div></div>

值=“123js”是我输入的错误值,其中生成的错误消息在下一行中提到 .

提前致谢 .

3 回答

  • 0

    首先,我承认我对testcafe没有权威,只是学习自己 .

    这就是说我的断言工作如下:

    await t.expect(Selector('h2').withText('Some text').exists).ok();

    在你的情况下,如果你没有id / class可以用来缩小搜索范围,那么它可能效率很低(你的app中可能有很多div / span) . 你能提供一些关于用于显示错误的dom的信息吗?

  • 2

    正如@Iain_b所说,您可以使用 Selectorok() 断言来检查错误消息的存在 . 您可以使用Adjacent sibling combinator选择错误的 <div> 标记 . 但是,在验证失败后,元素可以插入到DOM树中,或者在页面加载后就可以插入,并且在验证失败后才会显示 .

    所以对于第一种情况,你应该使用类似的东西:

    await t.expect(Selector('#uid + .abyss-error-message').withText('Please enter a valid Unique ID Number').exists).notOk();
    
    await t.typeText('#uid', '@$dfgh');
    
    await t.expect(Selector('#uid + .abyss-error-message').withText('Please enter a valid Unique ID Number').exists).notOk();
    

    而对于第二个:

    await t.expect(Selector('#uid + .abyss-error-message').withText('Please enter a valid Unique ID Number').visible).notOk();
    
    await t.typeText('#uid', '@$dfgh');
    
    await t.expect(Selector('#uid + .abyss-error-message').withText('Please enter a valid Unique ID Number').visible).notOk();
    
  • 2

    谢谢你的帮助..

    我能够使用下面提到的条件找到元素

    Selector ('.abyss-error-message').withText('Please enter a valid UID')
    

相关问题