2016-07-21 11 views
2

私はclick編集テンプレートアイコン(下の画像ではメモ帳のように見える)を各行に必要とするWebテーブルを持っています。テーブルはこのように見えます。Python-SeleniumのXpathにアポストロフィ( ')を含む文字列変数を渡すにはどうすればよいですか?

私のコードテキストをチェックして、アイコンをクリックします。私は最初の2つには何の問題もありませんが、最後のものはアポストロフィのために無効なxpath表現の誤りを与えます。以下は私が使用しているコードです。リスト 'form_titles'は、ローカルフォルダからこれらの各フォームに1つずつアップロードする必要があるファイル.xsnを検出することによって動的に作成されます。各フォームタイトルには固有の.xsnファイルがあり、それぞれの.xsnファイルをその 'フォームタイトル'に参照するための事前コンパイル済みリストを含むスプレッドシートを使用します。

form_titles = ["3.08 Incident Estimates", "3.09 Quotation by the Consultant", "3.10 Employer's Assessment"] 

for form in form_titles:  
    try: 
     WebDriverWait(browser, 60).until(EC.presence_of_element_located((By.XPATH, "//td[contains(text(),'%s')]" % (form)))) 
    finally: 
     browser.find_element_by_xpath("//td[contains(text(),'%s')]/following-sibling::td/a[contains(@onclick, 'editProjectFormType')]" % (form)).click() 
     time.sleep(30) 

答えて

2

あなたは以下のように""文字をエスケープする\を使用する必要があります -

form_titles = ["3.08 Incident Estimates", "3.09 Quotation by the Consultant", "3.10 Employer's Assessment"] 

for form in form_titles:  
    try: 
     WebDriverWait(browser, 60).until(EC.presence_of_element_located((By.XPATH, "//td[contains(text(),\"%s\")]" % (form)))) 
    finally: 
     browser.find_element_by_xpath("//td[contains(text(),\"%s\")]/following-sibling::td/a[contains(@onclick, 'editProjectFormType')]" % (form)).click() 
     time.sleep(30) 

はそれが役に立てば幸い... :)

+0

作品がスムーズ。どうもありがとう。 – Chandral

+0

何らかの理由で ''%s "'は動作しません。なぜなら、私がそれを行うと、もはや文字列のままではないからです。 – Chandral

+0

@Chandral okありがとう、お手伝いしてうれしい..私は答えから削除しました...しかし、私はPythonの人ではないので、なぜ2番目のオプションが機能しないのかわかりません:) –

関連する問題