Как проверить, что таблица содержит указанные c строки - PullRequest
0 голосов
/ 06 апреля 2020

Я пытаюсь проверить, содержит ли таблица тип файла (1-я ячейка), то 3-ячеечная ячейка должна содержать jpg или png, и т. Д. c, а 5-я ячейка должна содержать (что-то)

функция должна возвращать true или false.
вот мой код, я не знаю, что я делаю неправильно, потому что он всегда возвращает false, даже если условия выполняются. Спасибо за помощь !!

public bool Results()
{      
    var aqcTable = Browsers.getDriver.FindElement(By.TagName("table"));
    var lstTrElem = aqcTable.FindElements(By.TagName("tr"));
    var i = 0;
    foreach (var cell  in lstTrElem)
    {                         
        if (lstTrElem[i].Text== "figure")
            if (lstTrElem[ i+ 2].Text.Contains("jpg"))
                if (lstTrElem[i + 4].Text.Contains("pass"))
                        return true;
    }
    return false;
}

1 Ответ

0 голосов
/ 09 апреля 2020

Вы пытаетесь получить Text элемента <tr>.

Вам необходимо получить текст <td>. Поэтому, если вы пытаетесь достичь:

Я пытаюсь проверить, содержит ли таблица тип файла (1-я ячейка), то 3-я ячейка должна содержать jpg или png, et c и 5-й ячейка должна содержать (что-то)

А содержимое HTML выглядит следующим образом:

<table>
    <tbody>
        <tr>
            <td>fig_ure</td>
            <td>Some value</td>
            <td>jpg</td>
            <td>Some other value</td>
            <td>Some other value</td>
        </tr>
        <tr>
            <td>Figure</td>
            <td>Some value</td>
            <td>jpg</td>
            <td>Some other value</td>
            <td>Some other value which contains the pass word</td>
        </tr>
    </tbody>
</table>

Примечание. При сравнении текста учитывается регистр. «figure» не будет совпадать с «Figure»

Примечание. Назовите ваши переменные как таковые, чтобы имя немедленно передавало их содержимое

Примечание. Сначала проверьте существование и доступ позже (tdElements.Count > 0?)

var firstTableElement = driver.FindElement(By.TagName("table"));
var trElementList = firstTableElement.FindElements(By.TagName("tr"));
foreach (var trElement in trElementList)
{
    var tdElementList = trElement.FindElements(By.TagName("td"));

    if (tdElementList.Count > 0)
    {
        bool trMatchesRequirements =
            tdElementList[0].Text == "figure" &&
            tdElementList[2].Text.Contains("jpg") &&
            tdElementList[4].Text.Contains("pass");

        if (trMatchesRequirements)
        {
            return true;
        }
    }
}
return false;
...