Pseudo Sudo
Pseudo Sudo

Reputation: 1412

Find element with selenium by display text

I am trying to hover over an element in a menu bar with selenium, but having difficulty locating the element. The element is displayed below :

<DIV onmouseover="function(blah blah);" class=mainItem>TextToFind</DIV>

There are multiple elements of this type so I need to find this element by TextToFind.

I've tried :

driver.FindElement(By.XPath("TextToFind"))

and

driver.FindElement(By.LinkText("TextToFind")) 

which both didn't work. I even tried:

driver.FindElement(By.ClassName("mainItem")) 

which also did not work. Can someone tell me what I am doing incorrectly?

Upvotes: 13

Views: 34985

Answers (2)

ozanmut
ozanmut

Reputation: 3234

Better ignoring the whitespaces around the text with this:

var elm = driver.FindElement(By.XPath("//a[normalize-space() = 'TextToFind']"));

This searches text within an [a] element, you can replace it with any element you are interested in (div, span etc.).

Upvotes: 2

Saurabh Gaur
Saurabh Gaur

Reputation: 23835

You are using incorrect syntax of xpath in By.Xpath and By.LinkText works only on a element with text and By.ClassName looks ok but may be there are more elements with that class name that's why you couldn't get right element, So you should try use below provided xPath with text :-

driver.FindElement(By.XPath("//div[text() = 'TextToFind']"));

Or

driver.FindElement(By.XPath("//div[. = 'TextToFind']"));

Or

driver.FindElement(By.XPath("//*[contains(., 'TextToFind')]"));

Hope it works...:)

Upvotes: 20

Related Questions