Python Selenium找不到包含类的节的列表?

Python Selenium找不到包含类的节的列表?,python,selenium,selenium-webdriver,selenium-chromedriver,Python,Selenium,Selenium Webdriver,Selenium Chromedriver,我正在尝试获取游戏列表 https://www.xbox.com/en-US/live/gold#gameswithgold 根据Firefox的开发控制台,我似乎找到了正确的类: 事实上,因为有3个游戏,我应该用下面的代码得到3个对象的列表:(等待是为了让Seleium可以加载页面) 但事实上,Selenium说它并不存在: 我不明白我做错了什么。我甚至试过像这样的css选择器 listOfGames = driver.find_element_by_css_selector("s

我正在尝试获取游戏列表

https://www.xbox.com/en-US/live/gold#gameswithgold
根据Firefox的开发控制台,我似乎找到了正确的类:

事实上,因为有3个游戏,我应该用下面的代码得到3个对象的列表:(等待是为了让Seleium可以加载页面)

但事实上,Selenium说它并不存在:

我不明白我做错了什么。我甚至试过像这样的css选择器

listOfGames = driver.find_element_by_css_selector("section.m-product-placement-item f-size-medium context-game gameDiv")

还是没什么。我做错了什么?

您正在尝试获得三个不同的游戏,因此需要提供不同的元素路径,或者可以使用类似于此的循环

i = 1
while i < 4:
    link = f"//*[@id='ContentBlockList_11']/div[2]/section[{i}]/a/div/h3"
    listGames = str(driver.find_element_by_xpath(link).text)
    print(listGames)
    i += 1 
i=1
而我<4:
link=f”//*[@id='ContentBlockList_11']/div[2]/section[{i}]/a/div/h3”
listGames=str(驱动程序。通过xpath(link.text)查找元素)
打印(列表游戏)
i+=1
您可以在xpath、css或类稍有不同的地方使用这种循环

通过这种方式,它将一个接一个地遍历web元素,并获得游戏列表


当您尝试获取名称时,我认为您需要放置
.text
,它只会获取名称,而不会获取其他任何内容

另一个选项,该选项带有一个不循环和更改的选择器,也不太依赖于页面结构,更易于阅读:

//a[starts-with(@data-loc-link,'keyLinknowgame')]//h3
下面是示例代码:

from selenium import webdriver
from selenium.common.exceptions import StaleElementReferenceException
    
driver = webdriver.Chrome()
url = f"https://www.xbox.com/en-US/live/gold#gameswithgold"
driver.get(url)
driver.implicitly_wait(10)
listOfGames = driver.find_elements_by_xpath("//a[starts-with(@data-loc-link,'keyLinknowgame')]//h3")
for game in listOfGames:
    try:
        print(game.text)
    except StaleElementReferenceException:
        pass
如果要查找的不仅仅是标题,请删除//h3选项:

//a[starts-with(@data-loc-link,'keyLinknowgame')]
并添加任何额外的Xpath,以便将范围缩小到所需的内容/元素