Selenium Python在列表中存储ID信息

时间:2018-09-05 18:20:47

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

我试图遍历无序列表,并在每个<li>

中收集ID信息。

例如

<ul>
<li id = Example-info>...</li>

有没有一种方法可以将“ Example-info”存储到变量或列表中

I want to store the id= "string" information

我有以下代码

ids = []
resultSet = browser.find_element_by_xpath('//*[@id="mainContent"]/div[1]/div/div[5]/ul')
ids = resultSet.find_element_by_tag_name('li')

for id in ids:
    print (id)

这由<ul>标记的xpath组成

任何建议都会很棒!

在此处填写代码。 https://pastebin.com/zC8VeeUf

2 个答案:

答案 0 :(得分:1)

您是如此接近正确。您只需要调用find_elements(注意S),它会创建一个孩子列表

您的打印声明也是错误的

ids = []
resultSet = browser.find_element_by_xpath('//*[@id="mainContent"]/div[1]/div/div[5]/ul')
ids = resultSet.find_elements_by_tag_name('li')

for id in ids:
    print(id.get_attribute('id'))

答案 1 :(得分:0)

您可以使用Javascript并将所有ID放在一行中,我唯一的抱怨是您使用//*[@id="mainContent"]/div[1]/div/div[5]/ul的xpath。我很确定您可以使用更好的选择器:

#ids is a list 
ids = browser.execute_script("return [...document.querySelectorAll('.left-panel li')].map(e => e.getAttribute('id'));")

您还可以在此处找到一些解决方案:Selenium: get_attribute one condition