The desired element is a dynamic element so to extract the text within the element you have to induce WebDriverWait for the visibility_of_element_located()
and you can use either of the following solutions:
-
Using
CSS_SELECTOR
:print(WebDriverWait(driver, 20).until(EC.visibility_of_element_located((By.CSS_SELECTOR, "p.value.noWrap[data-bind$='MarketValue']"))).get_attribute("innerHTML"))
-
Using
XPATH
:print(WebDriverWait(driver, 20).until(EC.visibility_of_element_located((By.XPATH, "//p[@class="value noWrap" and contains(@data-bind,'MarketValue')]"))).get_attribute("innerHTML"))
-
Note : You have to add the following imports :
from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.common.by import By from selenium.webdriver.support import expected_conditions as EC