Selenium webdriver - 如何使用xpath选择动态ID?

时间:2013-09-16 12:07:49

标签: html xpath selenium

使用xpath,我需要使用动态ID“select”链接选择文本“level38a”。在HTML代码中,我看到包含2 <td>个文字"level38a""select"

PS:在我的应用程序中,我有超过30个“选择”链接用于不同的文本。因此使用id="lnk_LEVEL_2449"效率不高。

我正在使用以下代码选择文字,但它没有点击选择按钮。

driver.findElement(By.xpath("//tr[td//a[@value='Select']]/td/a[contains(text(),'level38a')]"));`

HTML片段

<tr>
    <td>
        <img class="imHeader" alt="" src="include/img/context/level_dash.gif">
        <img class="imHeader" alt="" src="include/img/context/icon_telco_level.gif">
        level38a
    </td>
    <td> </td>
    <td>
        <a id="lnk_LEVEL_2449" href="jfn?isLevel=true&level=L4%3A2449&mfunc=614&cfunc=615&oid=L4%3A2191&ctx=L&jfnRC=9">Select</a>
    </td>
</tr>

2 个答案:

答案 0 :(得分:1)

这种方法 driver.findElement(By.xpath("//tr[td//a[@value='Select']]/td/a[contains(text(),'level38a')]"));仅查找元素,不会单击它。 你必须添加click()动作。像这样:

driver.findElement(By.xpath("//tr[td//a[@value='Select']]/td/a[contains(text(),'level38a')]")).click();

编辑: 我没有看过你的xpath。这是错误的。 请试试这些:

"//tr[td//a[contains(text(), 'Select')]]/td[contains(text(),'level38a')]"

或只是:

"//td[contains(text(), 'level38a')]"

答案 1 :(得分:0)

使用下面的xpath选择动态ID,它运行正常。首先,它在页面中找到文本“level38a”,然后单击“选择”链接。

driver.findElement(By.xpath(“// tr [td [contains(text(),'level38a')]] / td // a [contains(text(),'Select')] “))。click();