Home >Backend Development >Python Tutorial >How to Retrieve Text from Dynamically Changing HTML Elements in Selenium WebDriver?
Accessing Text Elements with Selenium WebDriver in Python
In web automation using Selenium WebDriver, retrieving text content from HTML elements is essential. However, issues can arise when the element's ID dynamically changes upon page reloads, as in the case presented.
The Original Code
The original code provided:
text = driver.find_element_by_class_name("current-stage").getText("my text")
attempts to locate an element by class name "current-stage" and extract its text, which is expected to be "my text."
The HTML Structure
The HTML structure provided shows the text element with a class name of "current-text" and a dynamic ID, as follows:
<span class="current-text" id="yui_3_7_0_4_1389185744113_384">my text</span>
The Issue
The issue with the original code is not related to XPath but rather the misuse of the getText method. Passing an argument to getText attempts to set the text of the element, not retrieve it.
The Correct Approach
The correct approach to extracting the text from the element is to use getText without any arguments, as follows:
text = driver.find_element_by_class_name("current-stage").getText()
This code will retrieve the text content of the element and store it in the text variable.
Verifying the Result
Instead of passing the expected text to the getText method, you can verify the retrieved text afterward using the assertEqual method, as follows:
expected_text = "my text" actual_text = driver.find_element_by_class_name("current-stage").getText() self.assertEqual(expected_text, actual_text)
This approach ensures that the retrieved text matches the expected value.
The above is the detailed content of How to Retrieve Text from Dynamically Changing HTML Elements in Selenium WebDriver?. For more information, please follow other related articles on the PHP Chinese website!