2016-07-12 17 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

ような何かをする必要があります[あなたはPythonで引用符をエスケープする方法について確認することができます](http://stackoverflow.com/a/3708167/3122133)の – Madhan

+1

可能な重複[脱出する方法クライアント上のJavascriptで使用されるPythonのシングルクォートをサーバー上で使用する](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) 
関連する問題