如何解决Codeceptjs Locator Builder-有没有办法与withAttr进行比较?
我尝试使用Locator Builder(https://codecept.io/locators/#locator-builder),并注意到当我使用 withAttr 时,它会进行相等的比较
例如:locate('a').withAttr({href: '/order/offer/'})
翻译成:
.//a[@href = '/order/offer']
我正在寻找 withAttr 转换为“包含”比较的选项。
例如:.//a[contains(@href,'/order/offer')]
由于href末尾具有动态值,因此我不得不在xpath中使用“ contains”。想知道位置生成器是否有类似的选项
注意:我看到 withText 进行了包含比较
解决方法
你可以使用类似的东西
locate('a[href^='/order/offer/']')
这将转化为
.//a[starts-with(@href,'/order/offer')]
不,您不能使用定位器生成器来完成此操作,因为只有该功能的开发人员才能定义其功能。您可以提出功能请求,但是根据我的经验,此功能并未得到广泛使用,因此很可能不会改进或创建新命令。
,您可能正在寻找Custom Locators。
// inside a plugin or a bootstrap script:
codeceptjs.locator.addFilter((providedLocator,locatorObj) => {
if (typeof providedLocator === 'string') {
// this is a string
if (providedLocator[0] === '=') {
locatorObj.value = `.//*[text()="${providedLocator.substring(1)}"]`;
locatorObj.type = 'xpath';
}
}
});
这意味着:
I.click('=Login');
您可能会很有创意。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。