我如何打印 Selenium 中的值,我只得到 <generator object <genexpr>,而 find_elements 不起作用

How can i print the value in Selenium, i am only getting <generator object <genexpr> at, and find_elements does not work

我正在尝试使用 selenium 获取我添加到列表中的值并将它们打印出来。但我只得到这个:。如何打印列表中的值。

我也尝试用“//tr[@class= 'text3'][11]/td”来缩短 xpath,但没有成功。

就像你看到的那样,我尝试遍历列表并将其转换为文本,但它也没有用。

这个工作范围(driver.find_elements(By.XPATH,"//table[2]/tbody/tr/td[2]/table[1] /tbody/tr/td[3]/table/tbody/tr[2]/td[position() >= last()]"))?

你们能帮帮我吗?

from selenium import webdriver
from selenium.webdriver.common.by import By

driver = webdriver.Chrome()
driver.implicitly_wait(10)
website = "https://langerball.de/"
driver.get(website)

for i in range(7):
    xpath_test = "//table[2]/tbody/tr/td[2]/table[1]/tbody/tr/td[3]/table/tbody/tr[2]/td[position() >= last()]"
    a = driver.find_elements(By.XPATH, xpath_test)
    test_li = []
    test_li.append(a)
print(b.text for b in test_li)

driver.find_elements 方法 returns 网络元素列表,同时您正在寻找它们的文本值。可以通过在网络元素上应用 .text 方法来接收网络元素文本值。
因此,您应该遍历接收到的网络元素列表并从列表中的每个网络元素中提取文本。
另外 test_li = [] 应该在循环之外定义。
所以你的代码可能是这样的:

from selenium import webdriver
from selenium.webdriver.common.by import By

driver = webdriver.Chrome()
driver.implicitly_wait(10)
website = "https://langerball.de/"
driver.get(website)
test_li = []
for i in range(7):
    xpath_test = "//table[2]/tbody/tr/td[2]/table[1]/tbody/tr/td[3]/table/tbody/tr[2]/td[position() >= last()]"
    a_list = driver.find_elements(By.XPATH, xpath_test)   
    for a in a_list:
        test_li.append(a.text)
print(b.text for b in test_li)

P.S.
我不确定您的其余代码:for i in range(7) 循环和 xpath_test XPath 表达式

这有效

test_li = []

xpath_test = "//table[2]/tbody/tr/td[2]/table[1]/tbody/tr/td[3]/table/tbody/tr[2]/td[position() <= last()]"
a_list = driver.find_elements(By.XPATH, xpath_test)   
for a in a_list:
    test_li.append(a.text)
print(test_li)