Whats the difference between getting text and innerHTML when using selenium. Even though we have text under particular element, when we perform
I have just selected the css selector and used below code:
from selenium import webdriver
driver = webdriver.Chrome()
driver.maximize_window()
driver.get("http://www.costco.com/Weatherproof%C2%AE-Men's-Ultra-Tech-Jacket.product.100106552.html")
print driver.find_element_by_css_selector(".product-h1-container.visible-xl-block>h1").text
and it prints:
Weatherproof® Men's Ultra Tech Jacket
The problem is h1[itemprop='name'] selector on chrome or firefox are returning 2 matching nodes while .product-h1-container.visible-xl-block>h1 is returning only one matching node thats why its prining what is expected
To prove my point run below code:
from selenium import webdriver
driver = webdriver.Chrome()
driver.maximize_window()
driver.get("http://www.costco.com/Weatherproof%C2%AE-Men's-Ultra-Tech-Jacket.product.100106552.html")
x= driver.find_elements_by_css_selector("h1[itemprop='name'] ")
for i in x:
print "This is line " , i.text
It will print
This is line
This is line Weatherproof® Men's Ultra Tech Jacket
Because select_element_by_css_selector selects the first element with matching selector and that does not contain any text so it does not print. Hope you understand now