Как искать по столбцу таблицы, в имени которого есть пробелы? - PullRequest
0 голосов
/ 27 июня 2019

Я строю тест, который должен искать в таблице и находить объект по имени столбца. Проблема в том, что в имени столбца есть пробел, например: «Дружественное имя»

Мне просто интересно, как получить инфраструктуру atata, чтобы найти это. Пользовательские параметры поиска, такие как [Term("Friendly name")], не работают в табличных объектах.

Я также пытался использовать [Term(TermCase.Sentence)], и он компилируется, но не работает и с таблицами. Я еще не очень знаком с ататой, чтобы знать, как заставить это работать должным образом. Компилятор "Невозможно найти видимый столбец".

Вот строка кода теста:

pageObject.Table.Rows.Count.Get(out count).
    Table.Rows[x => x.Friendly name == "OBJECTNAME"].Click().

Любой совет был бы очень полезен.

<thead class="MuiTableHead-root-325">
<tr class="MuiTableRow-root-326 MuiTableRow-head-329">
<th class="MuiTableCell-root-331 MuiTableCell-head-332" scope="col">Column name</th>
<th class="MuiTableCell-root-331 MuiTableCell-head-332" scope="col">Column name2</th>
</tr>
</thead>
<tbody>
<tr class="MuiTableRow-root-326">
<td class="MuiTableCell-root-331 MuiTableCell-body-333">TESTCELL</td>
<td class="MuiTableCell-root-331 MuiTableCell-body-333">TESTCELL2</td>
</tr>
</tbody>

Пример Xpath: div[@id="root"]/div[2]/main/div[2]/div/div/table/tbody/tr[12]/td[1]

Как видите, в элементах, с которыми я могу работать, не так много. Эти таблицы генерируются динамически, поэтому информация может быть перемещена или удалена, но для целей тестирования это не является большой проблемой.

{
    using _ = Example;

    public class Example : Page<_>
    {
        public Table<ExampleTableRow, _> Table { get; private set; }

        public class ExampleTableRow : TableRow<_>
        {
            [Term(TermCase.Sentence)]
            public Text<_> ColumnName { get; private set; }
            public Clickable<_> Edit { get; private set; }
        } 
        [FindByXPath("div[@id='root']/div[2]/path/input")]
        public TextInput<_> RenameTest { get; private set; }
    }
}

and the class..

int count;
            Go.To<ExampleTable>().
            Table.Rows.Count.Get(out count).
            Table.Rows[x => x.ColumnName == "Friendly name"].Edit.Click().
            RenameTest.Set("Reanametest").

1 Ответ

0 голосов
/ 27 июня 2019

[Term("Friendly name")] и [Term(TermCase.Sentence)] эквивалентны, если свойство имеет имя FriendlyName. Я бы попробовал использовать [Term(TermMatch.Contains, TermCase.Sentence)]. Если это сработает, это означает, что в начале или конце заголовка столбца есть дополнительные символы (th).

В любом случае, будет очень полезно решить вашу проблему, если вы поделитесь частью HTML-кода вашей таблицы и кода объекта страницы.

...