[javascript WebDrivero}从具有多个节点的Xpath中随机选择一个
我正在尝试从包含多个节点的Xpath中获取一个随机节点。节点的数量是可变的,每周都会发生变化。我需要以下两种解决方案中的一种才能工作:[javascript WebDrivero}从具有多个节点的Xpath中随机选择一个,javascript,selenium,xpath,webdriver-io,Javascript,Selenium,Xpath,Webdriver Io,我正在尝试从包含多个节点的Xpath中获取一个随机节点。节点的数量是可变的,每周都会发生变化。我需要以下两种解决方案中的一种才能工作: 获取与此Xpath对应的节点数。这样,我可以使用它来随机化它 另一个选项将给出相同的结果:随机给我1个,例如25个XPath 我试图用不同的方法来解决这个问题,但到目前为止没有一种方法奏效。 我遇到了这个解决方案: productCounter(){ let c = document.evaluate('count(//*[@itemtype]/
productCounter(){
let c = document.evaluate('count(//*[@itemtype]/*[@data-order-bacu])', document, null, XPathResult.ANY_TYPE, null);
console.log(c.numberValue);
}
它应该给我Xpath中的节点数,然后我可以使用它来随机化正确的节点数。但是由于我使用WebDrivero,它会给出错误:
未定义文档
所以我尝试了一些不同的方法,使用了WebDrivero的“browser.elements”功能,但我不确定这是否有用
productCounter(){
设a=browser.selectByIndex(“/*[@itemtype]/*[@data order bacu]”);
console.log(a);
}
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]',
{会话ID:'a45061ba0d9dfcf0b241877bb2951cc8',
价值:
[{元素:'0.5928327280562-1',
‘元件-6066-11e4-a52e-4f735466cecf’:‘0.59283272420562-1’,
选择器:'/*[@itemtype]/*[@data order bacu]',
值:[对象],
索引:0},
{元素:'0.5928327280562-2',
‘元件-6066-11e4-a52e-4f735466cecf’:‘0.59283272420562-2’,
选择器:'/*[@itemtype]/*[@data order bacu]',
值:[对象],
索引:1},
{元素:'0.59283272420562-3',
‘元件-6066-11e4-a52e-4f735466cecf’:‘0.59283272420562-3’,
选择器:'/*[@itemtype]/*[@data order bacu]',
值:[对象],
索引:2},
{元素:'0.59283272420562-4',
‘元件-6066-11e4-a52e-4f735466cecf’:‘0.59283272420562-4’,
选择器:'/*[@itemtype]/*[@data order bacu]',
值:[对象],
索引:3},
{元素:'0.59283272420562-5',
‘元件-6066-11e4-a52e-4f735466cecf’:‘0.59283272420562-5’,
选择器:'/*[@itemtype]/*[@data order bacu]',
值:[对象],
索引:4},
{元素:'0.59283272420562-6',
‘元件-6066-11e4-a52e-4f735466cecf’:‘0.59283272420562-6’,
选择器:'/*[@itemtype]/*[@data order bacu]',
值:[对象],
索引:5},
{元素:'0.59283272420562-7',
‘元件-6066-11e4-a52e-4f735466cecf’:‘0.59283272420562-7’,
选择器:'/*[@itemtype]/*[@data order bacu]',
值:[对象],
索引:6},
{元素:'0.59283272420562-8',
‘元件-6066-11e4-a52e-4f735466cecf’:‘0.59283272420562-8’,
选择器:'/*[@itemtype]/*[@data order bacu]',
值:[对象],
索引:7},
{元素:'0.59283272420562-9',
‘元件-6066-11e4-a52e-4f735466cecf’:‘0.59283272420562-9’,
选择器:'/*[@itemtype]/*[@data order bacu]',
值:[对象],
索引:8}],
选择器:'/*[@itemtype]/*[@data order bacu]',
好了,我找到了这个问题的答案:
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();
}
“add-to-cart\uuuu submit”在本例中是我需要添加到路径中的一个额外按钮,因为每个节点/元素都有4个按钮。好了,我找到了这个问题的答案:
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();
}
“add-to-cart\uuuu submit”在本例中是我需要添加到路径中的额外内容,因为每个节点/元素都有4个按钮