我已經進行了研究和調查,但似乎沒有任何工作。假設我想要一個帶有「Tony's Computer」文本的xpath。我不能做到以下幾點:使用xpath使用撇號(「'」)查找文本
//*[contains(text(), 'Tony's Computer')]
由於明顯的原因,因爲'在y和s之間不引用正文。但也不這項工作:
//*[contains(text(), 'Tony\'s Computer')]
也
//*[contains(text(), 'Tony''s Computer')]
有沒有辦法逃脫撇號?我找不到任何東西。我能做的最好的是與Java以下(假設textToLookFor有文本查找):
String[] fields = textToLookFor.split("'");
String textx = "";
for (int indx = 0; indx < fields.length; indx++) {
String stext = fields[indx];
String cont = "contains(text(),'" + stext + "') ";
if (!textx.isEmpty()) {
textx += " and ";
}
textx += cont;
}
String xpath = "//*[" + textx + "]";
基本上做了
//*[contains(text(),'Tony') and contains(text(), 's Computer')]
這是我認爲不夠好。但是,這不完全匹配。例如,它可以找到「託尼和鮑勃的計算機」。
有沒有其他人有過這樣的成功?我找不到任何其他解決方案。順便說一句,當我找到元素我可以說字符串顯示= ele.getText();然後檢查顯示的.contains(textToLookFor)。
在這種情況下,我首先需要做一個textToLookFor = textToLookFor.replaceAll(「\」「,」\\\「」);,它可以轉義任何雙引號。
他們建議使用「而不是」或使用\「但這不適用於我。」他們「我的意思是上述可能的重複;-) – Tony
你在使用XPath 1.0嗎? –
@Tony你應該你的代碼顯示了你如何實現'他們'的建議,如何:'String xpath =「//*[contains(.,\""Tony's Computer \」)]「;'? – har07