0

我想根据第一列值(xyz)创建一个用于单击“运行”(第 4 列)的 xpath。下面的 xpath 不起作用。你能建议一种更好的编写xpath的方法吗?

//table/tbody/tr/td[text()='xyz fix']/parent::tr/td[4]
<div id="main">
   <table class="FixedLayout" width="1000px">
      <tbody>
         <tr></tr>
         <tr>
            <td class="RowHeight">
               <a href="/TestPass/View/373">xyz</a>
            </td>
            <td>xyz fix</td>
            <td>1125</td>
            <td>
               <a href="/Instance/Create?suiteId=373">Run</a>
            </td>
         </tr>
         <tr>
            <td class="RowHeight">
               <a href="/TestPass/View/372">abc</a>
            </td>
            <td>abc fix</td>
            <td>1125</td>
            <td>
               <a href="/Instance/Create?suiteId=372">Run</a>
            </td>
         </tr>
      </tbody>
   </table>
</div>
4

1 回答 1

2

我不明白为什么你的没有工作。请澄清“不起作用”的含义。NoSuchElementException? ElementNotVisibleException? 错误的 XPath?不点击链接还是什么?

同时,尝试以下 XPath(但问题可能是您的 Selenium 代码而不是 XPath):

在这里,我假设您想要<a>链接而不是<td>,因为您提到要单击它。

使用 XPath 谓词:

//*[@id='main']//table/tobdy/tr[td[text()='xyz']]/td[4]/a

将 XPath 谓词与属性选择器一起使用以避免使用索引。

//*[@id='main']//table/tobdy/tr[td[text()='xyz']]//a[contains(@href, 'Instance/Create')]

用于..获取父级

//*[@id='main']//table/tobdy/tr/td[text()='xyz']/../td[4]/a
于 2013-08-14T21:14:23.067 回答