Is it possible to get the text only from a parent element and not its children in Selenium?
Example: Suppose I have the following code:
This is a common problem in selenium
since you cannot directly access text nodes - in other words, your XPath expressions and CSS selectors have to point to an actual element.
Here is the list of possible solutions for your problem:
Google Link
in your case.Google Link
just to make an assertion, it could be that you would be okay with checking if the parent's text starts with Google Link
. See StringAssert.StartsWith().get the outerHTML
of the parent's text and feed to an HTML Parser, like Html Agility Pack. Something along these lines:
string outerHTML = driver.FindElement(By.CssSelector(".linksSection > a#google")).GetAttribute("outerHTML");
HtmlDocument html = new HtmlDocument();
html.LoadHtml(outerHTML);
HtmlAgilityPack.HtmlNode a = html.DocumentNode.SelectNodes("//a[@id='google']");
HtmlNode text = strong.SelectSingleNode("following-sibling::text()");
Console.WriteLine(text.InnerText.Trim());