This post will discuss several ways we can use to get the text of an element in Selenium. Please note that here we are talking about the visible text only, not the hidden text. ( Please look at this article to know how to get the hidden text of an element).
The visible text means the text that is visible on the webpage and not hidden using any CSS property.
<p>
 This is a text
</p>Here, “This is a text” is visible on the webpage.
<p style="visibility: hidden;">
 This is also a text
</p>The text is not visible on the webpage; thus, the methods we will explore in this post are irrelevant.
Below are some of the ways to get the text of an element and its sub-elements –
- Using getText() method
- Second, by using getAttribute() method
- And lastly, by using the JavascriptExecutor
Let’s discuss all of them one by one.
Using getText() method
We have already written a post on the getText() method explaining it in detail. getText() method get the visible text of an element. It will also get the text of sub-elements if present.
We will get the text of the highlighted element in the below image. You can find the element on our playground website ( testkru.com/Elements/TextMessages )

- First, we’ll locate the element using the findElementmethod. We can use theidattribute for this, and in this case, the element’s id is"plainText".
- We can then use the getText() method to get the element’s text.
public class CodekruTest {
	@Test
	public void test() {
		// pass the path of the chromedriver location in the second argument
		System.setProperty("webdriver.chrome.driver", "C:\\Users\\MEHUL\\OneDrive\\Desktop\\chromedriver.exe");
		WebDriver driver = new ChromeDriver();
		// opening the url
		driver.get("https://testkru.com/Elements/TextMessages");
		WebElement element = driver.findElement(By.id("plainText"));
		System.out.println(element.getText());
		
	}
}
Output –
A Plain TextUsing getAttribute() method
getAttribute() helps get the attribute’s or the property’s value of an element. You can read about the getAttribute() method on this link.
We have one property, “innerText“, which also returns the visible text of an element. So, we will only have to use the getAttribute("innerText") to get the text of an element.
public class CodekruTest {
	@Test
	public void test() {
		// pass the path of the chromedriver location in the second argument
		System.setProperty("webdriver.chrome.driver", "C:\\Users\\MEHUL\\OneDrive\\Desktop\\chromedriver.exe");
		WebDriver driver = new ChromeDriver();
		// opening the url
		driver.get("https://testkru.com/Elements/TextMessages");
		WebElement element = driver.findElement(By.id("plainText"));
		System.out.println(element.getAttribute("innerText"));
	}
}
Output –
A Plain TextWe got the same result here as well.
Using JavascriptExecutor
JavascriptExecutor helps in executing the javascript code in Selenium. We can get the innerText property’s value by executing the script below.
return arguments[0].innerTextwhere arguments[0] is the element whose innerText we want to find.
Below is the whole code for executing the above script and getting the text of an element.
public class CodekruTest {
	@Test
	public void test() {
		// pass the path of the chromedriver location in the second argument
		System.setProperty("webdriver.chrome.driver", "C:\\Users\\MEHUL\\OneDrive\\Desktop\\chromedriver.exe");
		WebDriver driver = new ChromeDriver();
		// opening the url
		driver.get("https://testkru.com/Elements/TextMessages");
		WebElement element = driver.findElement(By.id("plainText"));
		JavascriptExecutor jse = (JavascriptExecutor) driver;
		System.out.println(jse.executeScript("return arguments[0].innerText", element));
	}
}
Output –
A Plain TextThis is it. We hope that you have liked the article. If you have any doubts or concerns, please feel free to write us in the comments or mail us at admin@codekru.com.
