2016-04-26 57 views
1

我试图使用python(硒的webdriver)搜索和使用python

<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> 

从这个名单我想找到员工戴夫HJK搜索从列表选择路线从UL里比较两个字符串(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() 
+0

你尝试过什么代码片段会更好地帮助你。 – Paras

+0

@pArAs我用我的代码更新了我试过 – user3174886

回答

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()  
+0

这个工程。为什么你需要先find_element_by_id,如果我们使用find_element_by_link_text?我不明白它是如何做循环? – user3174886

+0

你可以直接调用'find_element_by_link_text',但如果页面中有多个'Dave Hjk(2)',那么你可能会点击错误的。 'find_element_by_id'确保链接是ID为List的目标列表的子节点。 –