web-dev-qa-db-ja.com

Webdriverを使用して要素を見つけながらxpathでアポストロフィ( ')を使用する方法は?

私はxpath式でアポストロフィ( ')を使用する必要がありますが、これはwebdriverを使用して要素を見つけるのに使用する必要があります

以下のXpath式を使用する必要があります

//input[@text="WE'd like to hear from you"]

上記の式を要素検索関数で使用している間、二重引用符を単一引用符に置き換えています

driver.findelements(By.xpath("//input[@text='WE'd like to hear from you']"))
14

以下に示すようにxpathを使用します。

driver.findElements(By.xpath("//input[contains(@text,\"WE'd\")]"));

お役に立てれば。

21
k.s. Karthik

XPath 1.0は引用符をエスケープする方法を提供しないため、二重引用符をXPath文字列リテラル区切り文字として使用する必要があります。それに加えて、Javaで二重引用符をエスケープして、二重引用符も使用するJava string delimiterと競合しないようにすることができます。

driver.findelements(By.xpath("//input[@text=\"WE'd like to hear from you\"]"))
5
har07

エスケープ文字の使用は目的を果たしません。連結機能を試してみましたが、それは魅力的でした。以下のxpathを参照してください。

タグ:liワークフローイニシエーターのマネージャー/ li

関数を連結し、文字列を–として分割します

concat('Manager of Workflow Initiator',"'",'s Manager')

一重引用符二重引用符に保持され、他の文字は一重引用符に保持されます。

XPathは次のようになります。

//li[.=concat('Manager of Workflow Initiator',"'",'s Manager')]
1
Moin

上記のソリューションが機能しない場合は、エスケープシーケンスを使用して以下のソリューションを使用します。

xpath: //li[.=\"Manager of Workflow Initiator's Manager\"]

ここでは、エスケープ文字を使用してテキスト全体を文字列として扱っています

1
Moin