Selenium Webdriver:如何通过引用先前的标记xpath来选择动态生成的按钮

时间:2013-07-09 13:13:19

标签: java xpath selenium-webdriver

嗨,我正面临着动态生成按钮(删除按钮)的困难。 所有删除按钮具有相同的ID。如何通过使用Lync的xpath - 用户访问?

来单击删除按钮

我在表格中有3列和2行。我想点击第二行的按钮。

我试过xpath轴,我的代码看起来像这样 :driver.findElement(By.xpath("//a[.='PC/E - Home Branch View ']/following-sibling::/td[3]/input")).click(); 但这是一个错误:

  

“org.openqa.selenium.InvalidSelectorException:xpath表达式   '//a[.='PC/E - Home Branch View'] / follow-sibling :: / td [3] / input'   无法评估或不在WebElement中进行评估(警告:The   服务器没有提供任何堆栈跟踪信息)“

我的HTML代码如下所示:

    <TR>
        <TD id="Lync - User Access" class="profileInnerTable">
            <A style="CURSOR: hand" class="TabLink" onmouseover="ddrivetip1('Default for CBA users not in RBS Branches','lightyellow',250)" onmouseout="hideddrivetip"() ;>Lync - User Access </A>
        </TD>
        <TD class="profileInnerTable" align="middle">&nbsp; </TD>
        <TD class="profileInnerTable">
            <INPUT style="WIDTH: 100px; HEIGHT: 20px" tabIndex="0" onclick="processRemoveRoleFromDN(form, 'erglobalid=7178977152403244193,ou=roles,erglobalid=00000000000000000000,ou=CBA,dc=com');" value="Remove" type="button" name="removeDiscRole"> 
        </TD>
    </TR>
    <TR>
        <TD id="PC/E - Home Branch View " class="profileInnerTable">
            <A style="CURSOR: hand" class="TabLink" onmouseover="ddrivetip1('PC/E access to user\'s Home Branch only - For RBS Branch Users','lightyellow',250)" onmouseout="hideddrivetip"() ;>PC/E - Home Branch View </A>
        </TD>
        <TD class="profileInnerTable" align="middle">&nbsp; </TD>
        <TD class="profileInnerTable">
            <INPUT style="WIDTH: 100px; HEIGHT: 20px" tabIndex="0" onclick="processRemoveRoleFromDN(form, 'erglobalid=3113620533928290009,ou=roles,erglobalid=00000000000000000000,ou=CBA,dc=com');" value="Remove" type="button" name="removeDiscRole"> 
        </TD>
    </TR>

我想点击删除按钮(在第二行)。 任何人都可以建议我如何通过参考同一行中元素的ID或Xpath来点击删除按钮?

PS:如果我执行代码driver.findElement(By.xpath("//input[@name='removeDiscRole']")).click();

它只会点击第一个删除按钮(第一行)。

2 个答案:

答案 0 :(得分:2)

我认为这个xpath会起作用。

*

  

// td [@id ='PC / E - Home Branch View'] // follow-sibling :: td // input

*

您开始使用的'a'标签没有任何兄弟姐妹。 'td'标签不在同一级别。它们是一个级别,因为'a'标记嵌套在'td'标记

答案 1 :(得分:1)

问:我想点击删除按钮(在第二行)

尝试使用第二行中的“removeDiscRole”按钮:

//tr[2]//input[@name='removeDiscRole']"

"(//input[@name='removeDiscRole'])[2]"为所有

的第二个“removeDiscRole”按钮

问:如何通过引用同一行中元素的ID或Xpath来点击删除按钮。

"//tr[td[@id = 'PC/E - Home Branch View ']]//input[@name='removeDiscRole']"