我正在嘗試計算"25516.B1-"頁面上出現部分文本的元素的次數。
現在我正在嘗試這個。然而,即使頁面上只有 3 個元素實體,它也會回傳 17。
Count 3 basiskerntaken
${count}= Get Element Count //*[contains(.,"25516.B1-")]
Log To Console ${count}
uj5u.com熱心網友回復:
為了將來讀者的利益,我將使用通用 XPath 和 XML,但這些概念是相同的,可以應用于任何使用 XPath 的框架,包括 機器人框架. 但是,請參閱有關硒限制的附錄。
計數數量的元素,其字串值中包含一個子,
count(//*[contains(.,"substring")])
"substring"由于元素的嵌套,會高估 的出現次數。例如,e 和 r都有包含"substring"以下內容的字串值:
<r>
<e>substring</e>
</r>
相反,計算包含子字串的文本節點的數量:
count(//text()[contains(.,"substring")])
在上面的例子中只有一個這樣的文本節點。
請注意,這假設文本未跨子元素進行磁區:
<r>
<e><b>subs</b>tring</e>
</r>
也可以看看
- 在 XPath 中測驗 text() 節點與字串值
- 如何將 XPath contains() 用于特定文本?
硒特定的附錄
@Trapli報告說“selenium 堅持只回傳 webelements,它不會回傳文本節點”,這是一個解決方法,它將回傳 selenium 可以計算的元素:
//*[text()[contains(.,"substring")]]
這將回傳所有具有包含所提供的文本節點子節點的元素"substring"。不幸的是,selenium 在托管 XPath 的方式上受到限制——大多數主機并沒有那么嚴格。
uj5u.com熱心網友回復:
如果你知道你有帶有該部分文本的元素,我會說使用 FindElements 方法來查找該方法的所有出現,它回傳一個元素串列,你可以簡單地呼叫 List.count();
List<WebElement> elementName = driver.findElements(By.LocatorStrategy("LocatorValue"));
elementname.count 是你的答案。
uj5u.com熱心網友回復:
我通過執行以下操作修復了它
${count}= Get Element Count //td[contains(text(),'25516.B1-')]
Should Be Equal As Integers ${count} 3
這將回傳 3 個元素并通過測驗。
感謝所有的答案!
uj5u.com熱心網友回復:
將通用xpath更新為更具體的xpath,如下所示:
${count}= Get Element Count //tag_name[contains(.,"25516.B1-")]
更規范:
${count}= Get Element Count //tag_name[contains(.,"25516") and contains(.,"B1-")]
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/359609.html
上一篇:XSL串列反向
