gpt4 book ai didi

css - nightwatch - 改变页面对象元素

转载 作者:行者123 更新时间:2023-11-28 03:22:00 25 4
gpt4 key购买 nike

是否可以在程序运行时更改“页面对象”中“元素”部分中的元素?我在运行期间创建对象,我必须检查对象名称是否存在。

我遵循了 here 中的示例:

对象页面:

module.exports = {
url: function() {
return 'https://' + this.api.globals.host + '/#/products/';
},
elements: {
product: ".product[data-product-name='%s']"
},
comands: [{
el: function(elementName, data) {
var element = this.elements[elementName.slice(1)];
return util.format(element.selector, data);
}
}]
};

测试程序:

'my test': function (browser) {
var page = browser.page.myPage();
page.click(page.el('@product', 'milk')); // .product[data-product-name='milk']
}

到目前为止,一切正常。虽然它返回一个选择器字符串并且这个字符串是正确的。但是我遇到了两个问题:

1) 测试正在搜索字符串名称,因此,我使用 XPath 选择器,但是 Nightwatch 切换回“CSS 选择器”。有没有办法让 Nightwatch 保持在 XPath 模式?

enter image description here

2) 虽然上面的“var page”对象使用页面对象模式,但不可能将参数作为字符串传递,它必须是我的页面对象文件中指定的“元素”部分中的“元素”。该示例是否仅因为它是“CSS 选择器”才有效?

谢谢!

最佳答案

您需要在元素中添加一个 selectorlocateStrategy 字段来指定您需要 xpath,因为默认情况下在页面对象中使用 CSS。

elements: {
product:{
locateStrategy :'xpath',
selector : "//product[@data-product-name='%s']"
}
}

您还应该有一个在页面对象中为您执行点击的函数。

关于css - nightwatch - 改变页面对象元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45162543/

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