【问题标题】:Selenium Python Iterate over li elements inside olSelenium Python 迭代 ol 中的 li 元素
【发布时间】:2021-09-23 18:35:54
【问题描述】:

我需要使用 python 和 selenium 提取多个 li 元素的文本,所有这些元素都在一个 ol 元素中。 列表是这样的:

/html/body/main/div/div/section/ol/li[3]/div/div/div[2]/div[1]/a[1]/h2
/html/body/main/div/div/section/ol/li[4]/div/div/div[2]/div[1]/a[1]/h2
/html/body/main/div/div/section/ol/li[5]/div/div/div[2]/div[1]/a[1]/h2
/html/body/main/div/div/section/ol/li[6]/div/div/div[2]/div[1]/a[1]/h2
...

到目前为止,我正在使用以下代码,但此代码仅显示一个元素,而不是整个列表。 它有什么问题? 谢谢!

articles_list=r'/html/body/main/div/div/section/ol'
articles_elements = driver.find_elements_by_xpath(articles_list)

for article in articles_elements:
    title = article.find_element_by_xpath('.//div/div/div[2]/div[1]/a[1]/h2').text
    print('Title:'+title)

【问题讨论】:

    标签: python-3.x selenium selenium-webdriver


    【解决方案1】:

    我看到li 标记具有增量索引,例如[3] 然后[4] 等等..

    您可以通过声明i = 3 来查找每个网络元素,最初声明然后使用以编程方式递增

    a = 3
    size_of_list  = driver.find_elements_by_xpath(f"/html/body/main/div/div/section/ol/li")
    for i in range(size_of_list):
        title = driver.find_element_by_xpath(f"/html/body/main/div/div/section/ol/li[{a}]/div/div/div[2]/div[1]/a[1]/h2").text
        print('Title:', title)
        a = a +1
    

    【讨论】:

    • 由于某些未知原因.. 使用此代码,它仍在迭代第一个元素。不知道为什么
    • @CristianAvendaño : 逻辑不正确,我已更正,请重试。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-09-09
    • 2020-08-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多