使用python搜索和比较ul li中的字符串

时间:2016-04-26 19:04:40

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

我尝试使用python(Selenium webdriver)从列表中搜索字符串

<li role="treeitem" aria-expanded="true" id="List" class="jstree-node  jstree-open">
   <i class="jstree-icon jstree-ocl"></i>
   <a class="jstree-anchor" href="#"><i class="jstree-icon jstree-themeicon"></i>Employees</a>
   <ul role="group" class="jstree-children">
      <li role="treeitem" id="workid:1" class="jstree-node  jstree-leaf"><i class="jstree-icon jstree-ocl"></i>
         <a class="jstree-anchor" href="#"><i class="jstree-icon jstree-themeicon"></i>Anna Def(1)</a></li>
      <li role="treeitem" id="workid:2" class="jstree-node  jstree-leaf" aria-selected="false"><i class="jstree-icon jstree-ocl"></i>
          <a class="jstree-anchor" href="#"><i class="jstree-icon jstree-themeicon"></i>Dave Hjk(2)</a></li>
      <li role="treeitem" id="workid:3" class="jstree-node  jstree-leaf"><i class="jstree-icon jstree-ocl"></i>
          <a class="jstree-anchor" href="#"><i class="jstree-icon jstree-themeicon"></i>Ght Dgh(3)</a></li>
       <li role="treeitem" id="workid:4" class="jstree-node  jstree-leaf"><i class="jstree-icon jstree-ocl"></i>
          <a class="jstree-anchor" href="#"><i class="jstree-icon jstree-themeicon"></i>Acdc Dedef(4)</a></li>

从这个列表中我想从树中找到Employee Dave Hjk(2)并选择他。如何使用循环搜索?

这是我尝试过的,但我认为我获得阵列(li)的方式是:(

  li = SeleniumHelperInstance.driver.find_elements_by_xpath("//*[@id="List"]/ul")


  for i in range(len(li)):
    selectuser = "Dave Hjk(2)"
    compUser = SeleniumHelperInstance.driver.find_element_by_css_selector("#List > ul > li:nth-child(i)")
    if (selectuser == compUser.text):
        compUser.click()

1 个答案:

答案 0 :(得分:1)

您可以先找到树,然后找到find_element_by_link_text的链接:

driver.find_element_by_id("List") \
      .find_element_by_link_text("Dave Hjk(2)") \
      .click()

您还可以使用XPath通过一次调用获取链接:

driver.find_element_by_xpath("id('List')//a[.='Dave Hjk(2)']") \
      .click()