从两个不同的页面中查找网格列文本的相同xpath

时间:2014-07-29 20:27:01

标签: xpath selenium-webdriver

在我们的应用程序中,存在两页上有网格的情况。我想从网格中获取列的文本。但两个网格的列文本都没有什么不同的HTML。

第1页网格HTML:

<div class="ngHeaderContainer" ng-style="headerStyle()" style="width: 598px; height: 30px;">
  <div class="ngHeaderScroller" ng-style="headerScrollerStyle()" ng-header-row="" style="height: 30px;">
    <div class="ngHeaderCell ng-scope col0 colt0" ng-class="col.colIndex()" ng-repeat="col in renderedColumns" ng-style="{ height: col.headerRowHeight }" style="height: 30px;">
     <div class="ngVerticalBar ngVerticalBarVisible" ng-class="{ ngVerticalBarVisible: !$last }" ng-style="{height: col.headerRowHeight}" style="height: 30px;"> </div>
      <div ng-header-cell="">
        <div class="ngHeaderSortColumn " ng-class="{ 'ngSorted': !col.noSortVisible() }" ng-style="{'cursor': col.cursor}" style="cursor: pointer;" draggable="true">
          <div class="ngHeaderText ng-binding colt0" ng-class="'colt' + col.index" ng-click="col.sort($event)">Request ID</div>

为此,我写了xpath //div[@class='ngHeaderContainer']//div[@ng-header-cell='']//div[contains(@class,'ngHeaderText')]

网格HTML

<div class="ngHeaderContainer" ng-style="headerStyle()" style="width: 598px; height: 30px;">
  <div class="ngHeaderScroller" ng-style="headerScrollerStyle()" ng-header-row="" style="height: 30px;">
    <div class="ngHeaderCell ng-scope col0 colt0" ng-class="col.colIndex()" ng-repeat="col in renderedColumns" ng-style="{ height: col.headerRowHeight }" style="height: 30px;">
     <div class="ngVerticalBar ngVerticalBarVisible" ng-class="{ ngVerticalBarVisible: !$last }" ng-style="{height: col.headerRowHeight}" style="height: 30px;"> </div>
      <div ng-header-cell="">
        <div class="ng-scope ng-binding" ng-click="onColumnClick( 3, 'select', $event)">
        Request ID
         <img class="" ng-click="onColumnClick( 3, 'delete', $event)" src="styles/images/common/delete.png" ng-show="true">
<img>
</div>

为此,我写了xpath //div[@class='ngHeaderContainer']//div[@ng-header-cell='']/div

对于网格,我已经编写了一个类,并且在该类中我返回列名称的方法。因为,对于两个不同页面上的网格,xpath到列名称是不同的,我不能使用相同的方法。

有人可以帮助我获取xpath,它可以用来返回两个页面网格的列名吗?

1 个答案:

答案 0 :(得分:1)

这个xpath有希望这样做。我遇到了类似的问题。从here获得帮助。这应该返回两个元素

// * [contains(@class,&#39; ng-binding#39;)]