gpt4 book ai didi

javascript - 如何在 Node.js 和 TestCafe 不等待检查选择器是否不存在的情况下编写 if 条件

转载 作者:搜寻专家 更新时间:2023-10-31 23:51:13 24 4
gpt4 key购买 nike

对于总的 N00b 问题,我们深表歉意,但是,

我正在编写一些测试自动化,我正在自动化的网站有时会在页面上的某些元素上出现某些行为,而在其他时候它在页面上的不同元素上会出现不同的行为。它通常属于两种模式之一。称之为模式A和模式B。问题是模式 A 和模式 B 之间有一些共享元素,所以它不是完全不同的元素。

但是,无论哪种情况,当模式 B 处于事件状态时,屏幕上始终有一个元素,而当模式 A 处于事件状态时,它不在屏幕上。此外,模式 A 的工作流程略长,带有一些额外的交互控件。让我们称这个元素为“ProfileIdentifier”。我有一个定位器,我想编写一些逻辑代码来检查这个元素是否不存在,然后与额外的控件交互并执行更长的工作流程,然后是公共(public)控件和工作流程之间常见的模式A&模式B。

简而言之,是这样的:

import mypage from '../../page-objects/mypage'; //JS file with all the locators for that page.

async function FillOutForm(t) {
var profileIdentifier = t.getElement(mypage.profileIdentifierLocator);
if (not(profileIdentifier.exists)) {
// Do the extra workflow
}
// Do the common workflow
}

或者可能是这样的:

import mypage from '../../page-objects/mypage'; //JS file with all the locators for that page.

async function FillOutForm(t) {
var profileIdentifier = t.getElement(mypage.profileIdentifierLocator);
if (profileIdentifier.exists.notOk()) {
// Do the extra workflow
}
// Do the common workflow
}

注意:我看过其他类似的问题,例如: related question #1

我确实从这个问题的其中一个答案中看到了一线希望: Possible answer

$('.myModal').isPresent().then(function(inDom) {
return inDom; // returns bool
};

我正在使用 Atom JavaScript 编辑器,结合 TestCafe 和 ES6,我更愿意远离像 getElementById 这样的代码,因为这不是在 JavaScript 中利用 CSS 定位器的最佳(性能和稳定)方式,特别是如果我们必须在网站的其他部分重复使用类似的定位器来进行样式设置和其他测试自动化。

最佳答案

您可以使用 exists 异步属性来检查元素是否存在。

import mypage from '../../page-objects/mypage'; //JS file with all the locators for that page.

async function FillOutForm(t) {
if (!await mypage.profileIdentifierLocator.exists) {
// Do the extra workflow
}

// Do the common workflow
}

关于javascript - 如何在 Node.js 和 TestCafe 不等待检查选择器是否不存在的情况下编写 if 条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47208410/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com