How to use apostrophe (') in xpath while findi

2020-02-12 01:17发布

问题:

I need to use apostrophe (') in my xpath expression which i need to use in finding elements using webdriver

i need to use below Xpath expression

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

while using the above expression in find elements function i am replacing double quotes with single quotes

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

回答1:

Use the xpath as shown below:

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

Hope this helps.



回答2:

You have to use double-quotes as your XPath string literal delimiter, since XPath 1.0 doesn't provide a way of escaping quotes. In addition to that, you can escape the double-quotes in Java, to avoid it from conflicting with your Java string delimiter, which also use double-quotes :

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


回答3:

The Escape character usage does not serve the purpose. I tried the concatenation function and it worked like a charm. Please see the below xpath.

tag: li Manager of Workflow Initiator's Manager /li

Concatenate function and split the string as –

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

Single quote is kept in double quote while other characters are kept in single quotes..

So XPath looks as –

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


回答4:

if the above solution doesn't work then use the below solution using escape sequence.

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

Here we are treating the whole text as a string using the escape character