我正在尝试从具有多个节点的Xpath中获取一个随机节点。节点数是可变的,并且每周都会更改。我需要以下2个解决方案中的1个才能工作:
productCounter(){
let c = document.evaluate('count(//*[@itemtype]/*[@data-order-bacu])', document, null, XPathResult.ANY_TYPE, null);
console.log(c.numberValue);
}
它应该给我Xpath中的节点数,然后我可以用它来随机分配正确的节点数。但由于我使用webdriverIO,因此会出现错误:
文档未定义
因此,我尝试了一些不同的操作,并使用了webdriverIO的“ browser.elements”功能。但不确定是否有帮助。
productCounter(){
let a = browser.selectByIndex("//*[@itemtype]/*[@data-order-bacu]");
console.log (a);
}
Console.log将给我类似的信息,请参阅下文。是否可以通过某种方式获得节点数?
{ sessionId: 'a45061ba0d9dfcf0b241877bb2951cc8', value: [ { ELEMENT: '0.5928327282420562-1', 'element-6066-11e4-a52e-4f735466cecf': '0.5928327282420562-1', selector: '//*[@itemtype]/*[@data-order-bacu]', value: [Object], index: 0 }, { ELEMENT: '0.5928327282420562-2', 'element-6066-11e4-a52e-4f735466cecf': '0.5928327282420562-2', selector: '//*[@itemtype]/*[@data-order-bacu]', value: [Object], index: 1 }, { ELEMENT: '0.5928327282420562-3', 'element-6066-11e4-a52e-4f735466cecf': '0.5928327282420562-3', selector: '//*[@itemtype]/*[@data-order-bacu]', value: [Object], index: 2 }, { ELEMENT: '0.5928327282420562-4', 'element-6066-11e4-a52e-4f735466cecf': '0.5928327282420562-4', selector: '//*[@itemtype]/*[@data-order-bacu]', value: [Object], index: 3 }, { ELEMENT: '0.5928327282420562-5', 'element-6066-11e4-a52e-4f735466cecf': '0.5928327282420562-5', selector: '//*[@itemtype]/*[@data-order-bacu]', value: [Object], index: 4 }, { ELEMENT: '0.5928327282420562-6', 'element-6066-11e4-a52e-4f735466cecf': '0.5928327282420562-6', selector: '//*[@itemtype]/*[@data-order-bacu]', value: [Object], index: 5 }, { ELEMENT: '0.5928327282420562-7', 'element-6066-11e4-a52e-4f735466cecf': '0.5928327282420562-7', selector: '//*[@itemtype]/*[@data-order-bacu]', value: [Object], index: 6 }, { ELEMENT: '0.5928327282420562-8', 'element-6066-11e4-a52e-4f735466cecf': '0.5928327282420562-8', selector: '//*[@itemtype]/*[@data-order-bacu]', value: [Object], index: 7 }, { ELEMENT: '0.5928327282420562-9', 'element-6066-11e4-a52e-4f735466cecf': '0.5928327282420562-9', selector: '//*[@itemtype]/*[@data-order-bacu]', value: [Object], index: 8 } ], selector: '//*[@itemtype]/*[@data-order-bacu]',
答案 0 :(得分:2)
哦,我找到了这个问题的旁遮普人:
randomCake(Option){
let a = browser.elements("//*[@itemtype]/*[@data-order-bacu]");
let random = Math.floor(Math.random()*a.value.length);
browser.elementIdElement(a.value[random].ELEMENT.toString(), '.add-to-cart__submit').click();
}
在这种情况下,“添加到购物车__提交” 是我需要添加的额外路径,因为每个节点/元素都有4个按钮