Testcafe 在使用 .visible 时等待元素出现,即使该元素在加载页面上已经可见

Testcafe waits for element to appear when using .visible even though the element already visible on the loaded page

我有一个 if 语句来检查元素是否可见,然后执行其他操作。

if (await locators.courseHeaderEditButton.visible) {
  //code
} 

但是,我注意到在这种情况下,即使元素在页面上可见,TestCafe 似乎也在等待元素按照我的 testcaferc.json 文件中的定义出现。

  "selectorTimeout": 15000,
  "assertionTimeout": 15000,

页面已加载且元素可见但 TestCafe 仍在等待的视频:

https://recordit.co/Bbo9qZFWAL

如果我切换到 exists 如下所示

if (await locators.courseHeaderEditButton.exists){
      //code
    } 

然后TestCafe不等待15秒,直接进行。

虽然使用 visible 并不总是遵循相同的行为,有时 TestCafe 会在元素可见时立即继续而不等待 15 秒。

知道为什么 visible 在此示例中以这种方式运行吗?

提前感谢您的回复。

exists 属性 和 visibility 属性 的工作方式不同。

exists 只检查元素是否出现在页面上。同时,visibility 属性 检查元素是否可见(没有 visibility:hidden 或显示:none),clientWidth/clientHeight 大于 0,并且是不与任何其他元素重叠。

您的情况可能不满足其中一个条件。

请分享您的完整示例以重现该问题。这将使我能够进一步研究它。