单击基于包含多行的文本的按钮

时间:2015-07-14 09:11:59

标签: java selenium-webdriver

我需要执行以下方案:有一个表单,其中数据以多行输入,每个记录都有自己的按钮,我需要根据电子邮件地址单击特定记录。

HTML来源:

AppBundle\Entity\User

这是我到目前为止所尝试过的,但它总是只选择第一条记录。

<div id="daily-sales-graph">
  <table class="graph" align="center">
    <tbody>
      <tr>
        <th style="width: 25px;"></th>
        <th style="width: 170px;">
          <h2 align="center" style="white-space: nowrap">&nbsp;ORDER NUMBER</h2>
        </th>
        <th style="width: 60px;">
          <h2 align="center">&nbsp;AMOUNT</h2>
        </th>
        <th style="width: 100px;">
          <h2 align="center" style="white-space: nowrap">&nbsp;ORDER DATE</h2>
        </th>
        <th>
          <h2 align="center" style="white-space: nowrap">&nbsp;LAST CALLED</h2>
        </th>
        <th>
          <h2 align="center" style="white-space: nowrap">&nbsp;SECURITY CODE</h2>
        </th>
        <th>
          <h2 align="center" style="white-space: nowrap">&nbsp;CUSTOMER'S EMAIL ADDRESS</h2>
        </th>
        <th style="width: 74px;"></th>
      </tr>

      <tr class="rowHighlight">
        <td style="font:12px arial,sans-serif;background-color: Maroon; color:white;"></td>
        <td>ORD2014236247112436</td>
        <td>$30.00</td>
        <td>23-Jun-2014</td>
        <td>23-Jun-2014</td>
        <td>5865</td>
        <td>uatmigrationCust@mailinator.com</td>
        <td>
          <input type="button" value="OPEN" name="ordDetails" class="button" disabled="&quot;disabled&quot;" onclick="OpenWind('/CRMProcessing/New-Order-Detail-NS2?customerid=20311&amp;ordId=41203&amp;AffiliateId=2041')">
        </td>
      </tr>

3 个答案:

答案 0 :(得分:0)

我对这类事情的建议是使用带有nth-child()功能的CSS Selector。

我的JSFiddle有一个基本的例子。

You just have to change the value of the nth-child(**i**) 

答案 1 :(得分:0)

使用xapth以下,它应该可以工作(你可以参数化电子邮件ID):

//td[text()='uatmigrationCust@mailinator.com']/following-sibling::td/input

答案 2 :(得分:0)

尝试采用绝对xpath。根据您的要求,数据在表中。每行的xpath将相差tr(例如:tr [1] / td [2])并表示将tr值更改为循环variable.Loop直到表的最后一行。

for(int i=1;i<rows.length;i++)
{
WebElement element="//html/body/div[3]/div/div/div/div[1]/tr["+i+"]/..../input"
element.click;
}

通过这个片段你可以遍历表格的最后一行。 希望在此之后你可以继续......