我尝试使用python使用selenium网络驱动程序收集一些文本,发现something.text
收集空字符串,但something.get_attribute(name="innerText")
收集我想要的值。为什么会发生这种情况?
something = driver.find_element(By.CLASS_NAME, "block-mega-child-cats")
tag = something.find_elements(By.TAG_NAME, "a")
for i in tag:
print(i.get_attribute(name="innerText"))
这部分代码运行得很好,但我不明白为什么.text
不能。
要收集诱导WebDriver所需的所有文本,请等待可见性_of_all_elements_located((并使用列表理解,您可以使用以下任一解决方案:
-
使用CSS_SELECTOR和
get_attribute("innerHTML")
:print([my_elem.get_attribute("innerHTML") for my_elem in WebDriverWait(driver, 20).until(EC.visibility_of_all_elements_located((By.CSS_SELECTOR, ".block-mega-child-cats a")))])
-
使用XPATH和文本属性:
print([my_elem.text for my_elem in WebDriverWait(driver, 20).until(EC.visibility_of_all_elements_located((By.XPATH, "//*[@class='block-mega-child-cats']//a")))])
-
注意:您必须添加以下导入:
from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.common.by import By from selenium.webdriver.support import expected_conditions as EC