Selenium xpath - 使用内部文本定位元素的text()的替代方法?

时间:2016-10-26 17:16:07

标签: python selenium xpath selenium-webdriver

我正在尝试创建一个唯一的XPATH,以便在网页上的表格中选择使用selenium的复选框。

HTML看起来像:

<tr ng-repeat="item in tests ">
   <td class="ng-binding">
       <span test: 'fa fa-cube greeniconcolor'}[item.type]"/>
       <span ng-show="item.type !='test' && item.type !='testset'">
       Test                 
      <div class="box-tools pull-right">
         <input type="checkbox" ng-model="selected_checkbox[$index]"/>
      </div>
   </td>
 </tr>

我希望我能够拥有一个XPATH看起来像:

.//td[text()='Test']//input

能够单击复选框,但这不起作用。如果我将其更改为包含并使用'。'符号而不是text()它确实有效:

.//td[contains(., 'Test')]//input

但是,如果我.='Test'它不起作用。我无法使用contains()方法的原因是该表中还包含Test2,并且也是选中的。

如果我在<tr>标签中有其他元素我不能使用text()方法,如何提出任何建议将不胜感激!

1 个答案:

答案 0 :(得分:1)

  

如果我在标签中有其他元素我不能使用text()方法,如何提出任何建议将不胜感激!

您应该尝试使用xpath .//td[normalize-space(.)='Test']//input 函数,该函数用于从字符串中去除前导和尾随空格,用单个空格替换空格字符序列,并将结果字符串作为下面: -

{{1}}