我试图遍历无序列表,并在每个<li>
例如
<ul>
<li id = Example-info>...</li>
有没有一种方法可以将“ Example-info”存储到变量或列表中
我有以下代码
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
答案 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