Trying to find span element by class and text with selenium c#
I want to click on Administration panel. The
<span>contains a class attribute and inner text.
I get an error saying "unable to locate element". What am I doing wrong?
<div class="item-inner"> <span class="title"> Administration </span> <i class="icon-arrow"></i> </div>
var admi = driver.FindElement(By.XPath("//span[contains(@class,'title')] [contains(text(),'Administration')]")); admi.Click();
Try to avoid the use of contains as your method of finding an element. This will mainly cause you issues later down the line when other elements unintentionally match
I would suggest you use something more like;
This example still isn't ideal, and ideally you should ask your developers to add in a unique ID for you to utilize.
spanelement is the only element on the page with the ClassName "title", you could just get the element by ClassName:
IWebElement admin = driver.FindElement(By.ClassName("title"));
spanelement is not the only element with the ClassName "title", but is the only element with that ClassName under its parent, you can get the parent element then the
IWebElment admin = driver.FindElement(By.ClassName("item-inner")).FindElement(By.ClassName("title"));
Otherwise, I would follow the advise of others using the XPath. Usually I try to use other methods of finding elements because XPath can be slow or unreliable.