当前位置: 首页 > 面试题库 >

TestCafe-如何在不通过测试的情况下检查Web元素是否存在?

东门修文
2023-03-14
问题内容

我正在尝试编写一个脚本,该脚本需要根据CSS选择器找到的特定浏览器对象是否存在来适应其工作流程行为。

我不想使用document.getElementByID方法,因为从技术上讲,这不是CSS选择器,并且我们整个企业都在CSS选择器上进行了标准化,因此在DOM以外的其他任何选择都不会使CSS选择器超出我们的代码审查过程无论如何。

var thing = await things.thingSelector(thingName);
if (await t.expect(thing.exists).notOk()) {
   await t.click(things.OpenThing(thingName));
} else {
   return false;
}
return true;

ThingSelector在哪里:

const thingSelector = name =>
  Selector('p.thing-header-title span')
    .withText(name)
    .parent('div.thing');

OpenThing在哪里:

const OpenThing = name =>
    thingSelector(name)
        .find('a.thing-footer-item')
        .withText('Open');

如果对象不存在并且正在检查它是否存在,或者对象是否存在并且正在检查它不存在,以及对象不存在的情况,我就必须能够继续执行并且它不存在,并且对象不存在,我正在检查它是否不存在。

在所有情况下,我仍然需要继续进行工作流程。

我已经尝试了逻辑硬币的两面:

if (!await t.expect(thing.exists).ok())

if (await t.expect(thing.exists).notOk())

如果以上方法之一在一种情况下没有失败,则将在另一种情况下失败,而在第一种没有失败的情况下,另一种将失败。我需要可以使我逻辑化的东西,但绝不会使脚本执行失败,并且仍然允许我根据对象是否存在来返回True或False。

在此先感谢您帮助我解决此问题,并帮助我学习和发展Java语言技能!


问题答案:

您可以通过以下方式检查条件中的async exists属性if

if(await things.thingSelector(thingName).exists) {
    // do something 
}


 类似资料:
  • 想象一下这个代码: 问题是:我怎样才能检查“休假”(如果“b”存在,它必须在“a”内)的存在,而不必事先对每个人的父母进行测试?

  • 在我正在测试的页面中,可能会显示两个按钮:BASIC或Advanced。 我想知道高级按钮是否显示--如果显示,请单击它。

  • 问题内容: 这是@Jimt在Go中编写的工作程序和控制器模式的一个很好的示例, ” 但是此代码也有一个问题:如果要在退出时删除工作通道,则会发生死锁。 如果您使用,下次控制器写入该命令将导致恐慌,因为go无法写入一个已关闭的通道。如果您使用某些互斥锁来保护它,则由于它不会从通道读取任何内容,并且将阻止写入,因此互斥锁将导致死锁。您还可以为频道提供更大的缓冲,以解决此问题,但这还不够。 因此,我认为

  • 问题内容: 将页面对象与webdriver一起使用时,如何检查元素是否存在。 到目前为止,我是这样做的。 页面对象: 但是我不敢相信这种尝试/捕获是人们应该这样做的方式。 那么检查元素是否退出的更好方法是什么(使用Page Objects)? 问题答案: Webdriver旨在在未找到元素的情况下引发异常。因此,没有任何方法可以验证Webdriver中元素的存在。 进行检查-http://grou

  • 问题内容: 示例:我正在检查是否存在像这样的数组元素: 但是,我不断收到此错误: 当然,我第一次想要实例时,$ instances不会知道密钥。我想我对可用实例的检查是错误的? 问题答案: 您可以使用语言构造或函数。 应该更快一些 (因为它不是函数) ,但是如果元素存在并且具有value,则将返回false 。 例如,考虑以下数组: 和这三个测试,依赖于: 第一个会得到您( 该元素存在,并且不为n

  • 我如何检查一个元素是否在页面上没有使用功能隐含等待?我可以检查元素是在页面上使用隐含等待: 有类似的溶液吗?