【问题标题】:Selenium Python Storing id information in a listSelenium Python在列表中存储id信息
【发布时间】:2023-03-22 08:51:01
【问题描述】:

我正在尝试遍历一个无序列表并收集每个 <li> 中的 id 信息

例如,

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

有没有办法可以将“示例信息”存储到变量或列表中

我有以下代码

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)

这包括&lt;ul&gt;标签的xpath

任何建议都会很棒!

完整代码在这里。 https://pastebin.com/zC8VeeUf

【问题讨论】:

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


【解决方案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'))

【讨论】:

  • 我感觉自己像个白痴,我完全昏迷了,另一个提示! :D 请
  • @davidyeritsyan 你是什么意思?您可以从那里获取 ID 并根据需要使用它吗?
  • 抱歉,当您说“调用创建子列表的 find_elements(注意 S)时,我感到困惑:”
  • 您正在调用find_element_by_tag_name,它返回ul 中的第一个元素。如果你调用find_elements_by_tag_name,你会得到ul 中所有元素的列表,这些元素被称为它的子元素。
  • 我说注意 S 只是为了区分 find_element_by_tag_namefind_elements_by_tag_name
【解决方案2】:

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

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

您也可以在这里找到一些解决方案:Selenium: get_attribute one condition

【讨论】:

  • 你能澄清一下你所说的更好的选择器是什么意思吗?你是说这个#mainContent > div.left-panel > div > div.result-list > ul
  • @davidyeritsyan #mainContent &gt; div.left-panel &gt; div &gt; div.result-list &gt; ul 对于选择器,您可能可以避免某些部分并使其更简单、更稳定,例如.left-panel .result-list li.result-list li。将来,如果您将 html 代码作为文本共享,您可以获得一些有用的示例,如何从社区中定位元素
  • ratemyprofessors.com/… 这是链接 :) 在左侧面板上显示教授姓名,当我对教授姓名进行“检查”时,您可以找到列表
  • 在我的回答中尝试 javascript 以使用简单的 css 选择器将所有 id 放在一行中
  • 什么问题?您想获取教授姓名和 ID?
猜你喜欢
  • 2023-02-21
  • 2013-02-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多