首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Python Selenium中迭代无序列表

如何在Python Selenium中迭代无序列表
EN

Stack Overflow用户
提问于 2015-07-13 18:12:54
回答 2查看 4.9K关注 0票数 1

我想使用Selenium在Python中迭代下面的元素。

代码语言:javascript
复制
<ul class="skills-section">
  <li class="endorse-item has-endorsements " data-endorsed-item-name="Ear Surgery">
  <li class="endorse-item has-endorsements " data-endorsed-item-name="Healthcare">
  <li class="endorse-item has-endorsements " data-endorsed-item-name="Hospitals">
  <li class="endorse-item has-endorsements " data-endorsed-item-name="Surgery">
  <li class="endorse-item has-endorsements " data-endorsed-item-name="Medical Education">
  <li class="endorse-item has-endorsements " data-endorsed-item-name="Pediatrics">
  <li class="endorse-item has-endorsements " data-endorsed-item-name="Treatment">
  <li class="endorse-item has-endorsements " data-endorsed-item-name="Public Health">
  <li class="endorse-item has-endorsements " data-endorsed-item-name="Patient Safety">
  <li class="endorse-item has-endorsements " data-endorsed-item-name="Emergency Medicine">
</ul>

我试过什么?

代码语言:javascript
复制
skillsSection = a.find_element_by_xpath("//ul[contains(@class, 'skills-section')]")
skillsList = skillsSection.find_elements_by_tag_name("li")
for skill in skillsList:
    print skill.find_element_by_xpath("//span[contains(@class,endorse-item-name')]/a").text  

但问题是,它总是打印第一个元素值。元素不递增。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-07-13 18:23:17

您要做的是使用'ul'找到带有class='skills-section'的标记,然后在子节点上进行迭代。

代码语言:javascript
复制
skillsSection = a.find_element_by_xpath("//ul[contains(@class, 'skills-section')]")
for child in skillsSection.find_elements_by_xpath(".//*"):
    ...

有关更多详细信息,请参见此答案:Selenium Python get all children elements

票数 1
EN

Stack Overflow用户

发布于 2016-03-20 19:10:05

我最近处理了一个类似的问题,我只能在列表中打印第一项。我发现了一个需要多行的解决方案,并且避免使用xpath。对于您的代码,您可能希望替换:

代码语言:javascript
复制
print skill.find_element_by_xpath("//span[contains(@class,'endorse-item-name')]/a").text  

有这样的东西:

代码语言:javascript
复制
a1 = skill.find_element_by_class_name('endorse-item-name')
a2 = a1.find_element_by_tag_name('a')
print a2.text

不像使用xpath的一行那么优雅,但它(应该)可以工作。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31390493

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档