2016-07-12 92 views
0

我有一行我檢查頁面上是否存在部分文本的某個元素。如何處理xpath中的單引號

self.b.find_element_by_xpath(".//*[contains(text(), '%s')]" % item_text) 

所以有可能item_text在字符串中有單引號。例如"Hanes Men's Graphic "

它變成self.b.find_element_by_xpath(".//*[contains(text(), 'Hanes Men's Graphic ')]")

在這種情況下,我得到的錯誤:

InvalidSelectorError: Unable to locate an element with the xpath expression .//*[contains(text(), 'Hanes Men's Graphic ')] because of the following error: 
SyntaxError: The expression is not a legal expression. 

什麼操作它是在self.b.find_element_by_xpath(".//*[contains(text(), '%s')]" % item_text)

使用之前,我知道我可以使用item_text我應該執行表達式的單引號和內部使用雙引號,但這不是我正在尋找的解決方案。

+0

[您可以檢查如何逃避蟒蛇行情](http://stackoverflow.com/a/3708167/3122133) – Madhan

+1

的可能的複製[如何逃生單引號在服務器上的Python在客戶端的Javascript中使用](http://stackoverflow.com/questions/3708152/how-to-escape-single-quotes-in-python-on-server-to-be-used -in-javascript-on-clie) – Madhan

回答

4

嘗試如下: -

self.b.find_element_by_xpath(".//*[contains(text(), \"Hanes Men's Graphic\")]") 

self.b.find_element_by_xpath('.//*[contains(text(), "%s")]' % item_text) 

self.b.find_element_by_xpath(".//*[contains(text(), \"%s\")]" % item_text) 

希望它會工作.. :)

+0

工程很好,謝謝。將等待更多的答案,如果沒有更好的進來,我會批准這一個:) – raitisd

0

這可能是與XPath實現將不允許字符串的雙引號所以你需要做的是這樣

if (item_text.find("'")): 
    item_text= item_text.replace("'", "', \"'\", '") 
    item_text= "concat('" + item_text+ "')" 
else: 
    item_text = "'" + item_text + "'" 

self.b.find_element_by_xpath(".//*[contains(text(), %s)]" % item_text)