I am trying to get all the text from the element 'show-more-less-html__markup
' from the example below with selenium and Python:
This is my try :
description = browser.find_element_by_xpath("//div[@class='show-more-less-html__markup']").text
CodePudding user response:
This is not Python
browser.findElement(By.className("description__text description__text--rich")).getText();
It's Java.
You are mixing things...
CodePudding user response:
Please check in the dev tools
(Google chrome) if we have unique entry in HTML DOM
or not.
xpath that you should check :
//div[@class='show-more-less-html__markup']
Steps to check:
Press F12 in Chrome
-> go to element
section -> do a CTRL F
-> then paste the xpath
and see, if your desired element
is getting highlighted with 1/1
matching node.
If we have 1/1 matching node, Please make sure that :
- This div is not under an iframe.
- This div is not under a shadow-root.
- You should not be on new tab/windows launched by selenium.
Once we are sure that we have unique entry and other criteria matches as well, we can try to extract text in the following way :
Code trial 1 :
try:
msg = WebDriverWait(browser, 20).until(EC.visibility_of_element_located((By.XPATH, "//div[@class='show-more-less-html__markup']"))).text
print(msg)
except:
pass
Code trial 2 :
try:
msg = WebDriverWait(browser, 20).until(EC.visibility_of_element_located((By.XPATH, "//div[@class='show-more-less-html__markup']"))).get_atrribute('innerHTML')
print(msg)
except:
pass
Code trial 3 :
try:
msg = WebDriverWait(browser, 20).until(EC.visibility_of_element_located((By.XPATH, "//div[@class='show-more-less-html__markup']"))).get_attribute('innerText')
print(msg)
except:
pass
Imports :
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC