简体   繁体   中英

how to select a range of list items with html

I have a list in my application. The list is seperated into sections such as "currently viewing as", "recently viewed" and "staff" etc. All list elements share the same classes so it isn't straight forward to identify the list element in the section recently viewed for instance.

I tried the following:

RecentlyViewed(".list-group-item:nth-of-type(3)"
        .concat("~ .list-group-item:nth-of-type(4)"))

but that seems to only return 1 list item and not both of them.

Any pointers in returning both the 3rd item and the 4th item in the list?.

Incidently the above locator is passed to a method like the following :

private WebElement sectionSearch(String locator, String empName) {
    return wait.andGetAllElements(locator).stream()
        .filter(ele -> ele.getAttribute("data-empno").equals(empName))
        .findFirst()
        .orElseThrow(() -> new RuntimeException("Could not find employee: ".concat(empName)
          .concat(" in element : ").concat(locator)));
  }

Any ideas where i may be going wrong on the list items being passed to the search function?

The html is as follows:

<div id="context-selector-search-results" class="list-group list-group-menu"><h4 class="text-muted">You are signed in as...</h4><li class="list-group-item list-group-item-split">

            <a href="" class="list-group-item-link" data-empno="3000" data-url="api/context/select/3000"><div class="media">
          <div class="media-left">
            <img class="context-selector-search-results-item-image media-object rounded-circle img-avatar" alt="Avatar" src="file/photo/T000~|~3000~|~2915483350193499~|~GIF~|~1~|~ok.gif" data-holder-rendered="true">
          </div>
          <div class="media-body">

            <small class="context-selector-search-results-item-empno">3000</small>
            <br>
            <strong class="context-selector-search-results-item-display-name">MANAGER3000, Mary G</strong>
            <br>

            <small class="context-selector-search-results-item-unit">Manufacturing Division</small><br>

          </div>
        </div></a>
        </li><h4 class="text-muted">Currently viewing...</h4><li class="list-group-item list-group-item-split active active-warning">

            <a href="" class="list-group-item-link" data-empno="5029" data-url="api/context/select/5029"><div class="media">
          <div class="media-left">
            <img class="context-selector-search-results-item-image media-object rounded-circle img-avatar" alt="Avatar" src="assets/ui/img/avatar.png" data-holder-rendered="true">
          </div>
          <div class="media-body">

            <small class="context-selector-search-results-item-empno">5029</small>
            <br>
            <strong class="context-selector-search-results-item-display-name">EMPLOYEE, Earl</strong>
            <br>

            <small class="context-selector-search-results-item-unit">Manufacturing Division</small><br>

          </div>
        </div></a>
        </li><h4 class="text-muted">Recently viewed...</h4><li class="list-group-item list-group-item-split">

            <a href="" class="list-group-item-link" data-empno="5029" data-url="api/context/select/5029"><div class="media">
          <div class="media-left">
            <img class="context-selector-search-results-item-image media-object rounded-circle img-avatar" alt="Avatar" src="assets/ui/img/avatar.png" data-holder-rendered="true">
          </div>
          <div class="media-body">

            <small class="context-selector-search-results-item-empno">5029</small>
            <br>
            <strong class="context-selector-search-results-item-display-name">EMPLOYEE, Earl</strong>
            <br>

            <small class="context-selector-search-results-item-unit">Manufacturing Division</small><br>

          </div>
        </div></a>
        </li><li class="list-group-item list-group-item-split">

            <a href="" class="list-group-item-link" data-empno="5027" data-url="api/context/select/5027"><div class="media">
          <div class="media-left">
            <img class="context-selector-search-results-item-image media-object rounded-circle img-avatar" alt="Avatar" src="assets/ui/img/avatar.png" data-holder-rendered="true">
          </div>
          <div class="media-body">

            <small class="context-selector-search-results-item-empno">5027</small>
            <br>
            <strong class="context-selector-search-results-item-display-name">EMPLOYEE, Earlene</strong>
            <br>

            <small class="context-selector-search-results-item-unit">Manufacturing Division</small><br>

          </div>
        </div></a>
        </li><h4 class="text-muted">My staff</h4><li class="list-group-item list-group-item-split">
            <a href="" class="list-group-item-more" data-display-name="JETSON, Jane" data-expand-id="E~4112016">
          <span class="tag tag-pill tag-primary hidden-xs-down float-xs-right">20</span>
        </a>
            <a href="" class="list-group-item-link" data-empno="4112016" data-url="api/context/select/4112016"><div class="media">
          <div class="media-left">
            <img class="context-selector-search-results-item-image media-object rounded-circle img-avatar" alt="Avatar" src="file/photo/T000~|~4112016~|~2915756609048099~|~PNG~|~1~|~janejetson.png" data-holder-rendered="true">
          </div>
          <div class="media-body">

            <small class="context-selector-search-results-item-empno">4112016</small>
            <br>
            <strong class="context-selector-search-results-item-display-name">JETSON, Jane</strong>
            <br>

            <small class="context-selector-search-results-item-unit">Manufacturing Division</small><br>

          </div>
        </div></a>
        </li><li class="list-group-item list-group-item-split">
            <a href="" class="list-group-item-more" data-display-name="PERSON130218, Eric" data-expand-id="E~130218">
          <span class="tag tag-pill tag-primary hidden-xs-down float-xs-right">20</span>
        </a>
            <a href="" class="list-group-item-link" data-empno="130218" data-url="api/context/select/130218"><div class="media">
          <div class="media-left">
            <img class="context-selector-search-results-item-image media-object rounded-circle img-avatar" alt="Avatar" src="assets/ui/img/avatar.png" data-holder-rendered="true">
          </div>
          <div class="media-body">

            <small class="context-selector-search-results-item-empno">130218</small>
            <br>
            <strong class="context-selector-search-results-item-display-name">PERSON130218, Eric</strong>
            <br>

            <small class="context-selector-search-results-item-unit">Manufacturing Division</small><br>

          </div>
        </div></a>
        </li><li class="list-group-item list-group-item-split">
            <a href="" class="list-group-item-more" data-display-name="ROBOTS, Eric" data-expand-id="E~3001">
          <span class="tag tag-pill tag-primary hidden-xs-down float-xs-right">20</span>
        </a>
            <a href="" class="list-group-item-link" data-empno="3001" data-url="api/context/select/3001"><div class="media">
          <div class="media-left">
            <img class="context-selector-search-results-item-image media-object rounded-circle img-avatar" alt="Avatar" src="assets/ui/img/avatar.png" data-holder-rendered="true">
          </div>
          <div class="media-body">

            <small class="context-selector-search-results-item-empno">3001</small>
            <br>
            <strong class="context-selector-search-results-item-display-name">ROBOTS, Eric</strong>
            <br>

            <small class="context-selector-search-results-item-unit">Manufacturing Division</small><br>

          </div>
        </div></a>
        </li><li class="list-group-item list-group-item-split">
            <a href="" class="list-group-item-more" data-display-name="SNODGRASS, Harold" data-expand-id="E~3003">
          <span class="tag tag-pill tag-primary hidden-xs-down float-xs-right">20</span>
        </a>
            <a href="" class="list-group-item-link" data-empno="3003" data-url="api/context/select/3003"><div class="media">
          <div class="media-left">
            <img class="context-selector-search-results-item-image media-object rounded-circle img-avatar" alt="Avatar" src="assets/ui/img/avatar.png" data-holder-rendered="true">
          </div>
          <div class="media-body">

            <small class="context-selector-search-results-item-empno">3003</small>
            <br>
            <strong class="context-selector-search-results-item-display-name">SNODGRASS, Harold</strong>
            <br>

            <small class="context-selector-search-results-item-unit">Manufacturing Division</small><br>

          </div>
        </div></a>
        </li><li class="list-group-item list-group-item-split">
            <a href="" class="list-group-item-more" data-display-name="SNODGRASS, Harold" data-expand-id="E~3004">
          <span class="tag tag-pill tag-primary hidden-xs-down float-xs-right">20</span>
        </a>
            <a href="" class="list-group-item-link" data-empno="3004" data-url="api/context/select/3004"><div class="media">
          <div class="media-left">
            <img class="context-selector-search-results-item-image media-object rounded-circle img-avatar" alt="Avatar" src="assets/ui/img/avatar.png" data-holder-rendered="true">
          </div>
          <div class="media-body">

            <small class="context-selector-search-results-item-empno">3004</small>
            <br>
            <strong class="context-selector-search-results-item-display-name">SNODGRASS, Harold</strong>
            <br>

            <small class="context-selector-search-results-item-unit">Manufacturing Division</small><br>

          </div>
        </div></a>
        </li><li class="list-group-item list-group-item-split">
            <a href="" class="list-group-item-more" data-display-name="VON DA EMPLOYEE, Eric" data-expand-id="E~5031">
          <span class="tag tag-pill tag-primary hidden-xs-down float-xs-right">20</span>
        </a>
            <a href="" class="list-group-item-link" data-empno="5031" data-url="api/context/select/5031"><div class="media">
          <div class="media-left">
            <img class="context-selector-search-results-item-image media-object rounded-circle img-avatar" alt="Avatar" src="file/photo/T000~|~2031~|~2915405557111499~|~JPEG~|~1~|~0A1BE6FA-43C4-4E85-A110-9F797A9525E6.jpeg" data-holder-rendered="true">
          </div>
          <div class="media-body">

            <small class="context-selector-search-results-item-empno">5031</small>
            <br>
            <strong class="context-selector-search-results-item-display-name">VON DA EMPLOYEE, Eric</strong>
            <br>

            <small class="context-selector-search-results-item-unit">Manufacturing Division</small><br>

          </div>
        </div></a>
        </li><li class="list-group-item list-group-item-split">
            <a href="" class="list-group-item-more" data-display-name="WAYNE, Bruce" data-expand-id="E~80000">
          <span class="tag tag-pill tag-primary hidden-xs-down float-xs-right">20</span>
        </a>
            <a href="" class="list-group-item-link" data-empno="80000" data-url="api/context/select/80000"><div class="media">
          <div class="media-left">
            <img class="context-selector-search-results-item-image media-object rounded-circle img-avatar" alt="Avatar" src="file/photo/T000~|~80000~|~2915797423381199~|~JPG~|~1~|~bruce-wayne_197x282.jpg" data-holder-rendered="true">
          </div>
          <div class="media-body">

            <small class="context-selector-search-results-item-empno">80000</small>
            <br>
            <strong class="context-selector-search-results-item-display-name">WAYNE, Bruce</strong>
            <br>

            <small class="context-selector-search-results-item-unit">Manufacturing Division</small><br>

          </div>
        </div></a>
        </li></div>

我设法使用以下xpath解决了我的问题:

//h4[contains(text(),'My staff')]/following::a[@*[starts-with(name(), 'data-em')]

One way you could do it is by using XPath. If you pass in your empno to a function and then insert that into the XPath below, it will return the first h4 preceding the found element. You can then match that with what you are expecting, etc.

//a[@data-empno='4112016']/preceding::h4

This returns 'My staff'

You would insert your variable like

"//a[@data-empno='"+ empno + "']/preceding::h4"

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM