我正在尝试编写一个脚本,该脚本需要根据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
我如何检查一个元素是否在页面上没有使用功能隐含等待?我可以检查元素是在页面上使用隐含等待: 有类似的溶液吗?