find_element_by_xpath不返回span类值

时间:2017-12-14 12:27:06

标签: python selenium selenium-chromedriver

enter image description here

嗨,

我试图抓取范围class = "ws-value"的值(在源代码图片中以红色为界)。我试过了:

test = driver.find_elements_by_xpath(".//span[@class='ws-value']")
print test

但我得到的只是一个空列表。

有人可以告诉我如何获得两个ws值吗?非常感谢!

4 个答案:

答案 0 :(得分:0)

使用find_element而不是find_elements和text方法来获取文本

test = driver.find_element_by_xpath(".//span[@class='ws-value']").text
print test

如果你想得到所有这些元素值,那么循环遍历它:

 test = driver.find_elements_by_xpath(".//span[@class='ws-value']")
 for x in test:
     print x.text

答案 1 :(得分:0)

使用.text方法和此xpath

test = driver.find_element_by_xpath("//span[contains(@class,'test')]").text
print test

如果有多个节点,你还必须使用if else条件

答案 2 :(得分:0)

您可以尝试按以下方式应用ExplicitWait等待所需span个节点的存在,然后获取text属性的值:

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

test = [node.text for node in WebDriverWait(driver, 10).until(EC.presence_of_all_elements_located((By.XPATH, ".//span[@class='ws-value']")))]

答案 3 :(得分:0)

根据HTML打印 84 69 ,您可以使用以下代码块:

for test in WebDriverWait(driver, 10).until(EC.visibility_of_all_elements_located(By.XPATH, "//ul[@id='walkscore-target']/li//div[@class='ws-score']/a[@rel='nofollow']/span[@class='ws-value']")) :
    print(test.get_attribute("innerHTML"))