簡體   English   中英

[javascript webdriverIO}從Xpath中從多個節點中隨機選擇一個

[英][javascript webdriverIO} select one random out of Xpath with multiple nodes

我試圖從具有多個節點的Xpath中獲取一個隨機節點。 節點數是可變的,並且每周都會更改。 我需要以下2個解決方案中的1個才能工作:

  1. 從與該Xpath對應的節點數中獲取一個數字。 這樣我就可以用它來隨機化
  2. 另一個將產生相同結果的選項:隨機給我一個,例如25個Xpath。

我試圖以不同的方式解決這個問題。 但到目前為止,都沒有成功。 我遇到了這個解決方案:

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]',

恩,我找到了這個問題的旁遮普人:

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個按鈕

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM