Итерация по строкам 'tr' в таблице HTML с помощью индекса WebElement в цикле For - PullRequest
0 голосов
/ 25 сентября 2018

Я пытаюсь перебрать строки в таблице, вытягивая текст из второго 'td' каждой строки и сравнивая его со значением из списка.Несмотря на то, что номер индекса идет в обратном направлении, при использовании в качестве номера индекса для строк 'tr', найденных с помощью 'FindElements', он не перемещается на следующую строку, поэтому каждый раз возвращает текст из первой строки.

List<string> policyList  = parsePolicyTable(driver, pageaction);

int numofPolicies        = policyList.Count();

for (var polListIndex = 0; polListIndex < numofPolicies; polListIndex++)
{
    By polTableBy        = ObjRepository("PolicySearch", "PolicyTable");
    IWebElement polTable = driver.FindElement(polTableBy);

    var rows             = polTable.FindElements(By.TagName("tr"));
    int rowNum           = rows.Count();

    for (var searchResultRow = 0; searchResultRow < rowNum; searchResultRow++)
    {
        //IWebElement polNumRow  = rows.ElementAt(searchResultRow);
        IWebElement polNumElem = rows[searchResultRow].FindElement(By.XPath("//td[2]"));

        string polNum          = polNumElem.Text;
        string listPolNum      = policyList[polListIndex];

        WritetoLogFile("Policy Number [" + searchResultRow + "] from Search - " + polNum + " | Policy Number [" + polListIndex + "] from List - " + listPolNum);

Вывод:

Номер политики [0] из поиска - XAL0001046-2 |Номер политики [0] из списка - XAL0001028-0

Номер политики [1] из поиска - XAL0001046-2 |Номер политики [0] из списка - XAL0001028-0

Номер политики [2] из поиска - XAL0001046-2 |Номер политики [0] из списка - XAL0001028-0

Я также попытался, закомментировал выше, найти следующую строку, используя функцию .ElementAt с тем же результатом.

Что такоеЯ пропал?

HTML ...

      <tr class="odd">
    <td title="Click to select this policy">
      <input type="radio" name="Policy" id="Policy1039" value="1039">
    </td>
    <td>
      <span class="link8pt cppsInfo" title="XAL0001039-7" data-policynumber="XAL0001039-7">XAL0001039-7</span>
    </td>
    <td title="Policyholder" style="white-space: nowrap;">SHOREY, NORMAND</td>
    <td title="Policyholder Phone Number(s)" style="white-space: nowrap;">(216) 657-7668 (H)</td>
    <td title="Policyholder Address">13675 HIGHWAY 43<br>RUSSELLVILLE, AL 35653-2831</td>
    <td>
      <span class="linkCompact agencyInfo" title="TEST AGENCY #1" data-agencyid="9000">9000-TEST AGENCY #1</span>
    </td>
    <td title="Policy Issue Date">08/31/2018</td>
    <td title="Policy Expiration Date">03/01/2019</td>
    <td>&nbsp;</td>
    <td>&nbsp;</td>
    <td title="Email Address"></td>
    <td title="Policy Term">6 months paid in full</td>
  </tr>
  <tr class="even">
    <td title="Click to select this policy">
      <input type="radio" name="Policy" id="Policy1037" value="1037">
    </td>
    <td>
      <span class="link8pt cppsInfo" title="XAL0001037-1" data-policynumber="XAL0001037-1">XAL0001037-1</span>
    </td>
    <td title="Policyholder" style="white-space: nowrap;">SMITH, JAMES</td>
    <td title="Policyholder Phone Number(s)" style="white-space: nowrap;">(205) 441-4444 (C)</td>
    <td title="Policyholder Address">100 HUEYTOWN ROAD<br>HUEYTOWN, AL 35023</td>
    <td>
      <span class="linkCompact agencyInfo" title="TEST AGENCY #1" data-agencyid="9000">9000-TEST AGENCY #1</span>
    </td>
    <td title="Policy Issue Date">08/30/2018</td>
    <td title="Policy Expiration Date">03/01/2019</td>
    <td class="xmark" title="This policy has a cancellation notice">X</td>
    <td>&nbsp;</td>
    <td title="Email Address"></td>
    <td title="Policy Term">6 month/5 pay - 17% down</td>
  </tr>

1 Ответ

0 голосов
/ 26 сентября 2018

Внешне это выглядит нормально для меня, поэтому я рискну предположить.Но тогда я считаю, что FindElements возвращает коллекцию IReadOnlyCollection.

Чистое предположение, не могли бы вы попробовать:

var rows = polTable.FindElements(By.TagName("tr")).ToList();

Правда, отладка здесь будет вашим другом.Посмотрите, что элементы строк и т. Д.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...