Не удалось найти элемент в Selenium - PullRequest
0 голосов
/ 01 октября 2018

Функциональность выглядит следующим образом:

, если вы ищете имя, результаты поиска будут отображаться в строках.В этих результатах следует выбирать, чей статус «Активный».Чтобы выбрать один, вы должны нажать на ссылку, которая находится в начале строки.Выбор основан на статусе.

Поэтому я попытался перейти от статуса «Активный» к ссылке с текстом «Имя идет сюда» и получил NoSuchElementException.

Код:

<tr height="20" class="evenListRowS1">

<td scope="row" align="left" valign="top" class="evenListRowS1" bgcolor="">
<a href="javascript:void(0)" onclick="send_back('Users','b559b4f3-20ee-9bb0-320d-5a4f630dea17');">Name goes here</a>
</td>

<td scope="row" align="left" valign="top" class="evenListRowS1" bgcolor="">
<a href="javascript:void(0)" onclick="send_back('Users','b559b4f3-20ee-9bb0-320d-5a4f630dea17');">email</a>
</td>

<td scope="row" align="left" valign="top" class="evenListRowS1" bgcolor="">
<a href="javascript:void(0)" onclick="send_back('Users','b559b4f3-20ee-9bb0-320d-5a4f630dea17');">position</a>
</td>

<td scope="row" align="left" valign="top" class="evenListRowS1" bgcolor="">
<a href="javascript:void(0)" onclick="send_back('Users','b559b4f3-20ee-9bb0-320d-5a4f630dea17');">Solutions - CRM Practice</a>
</td>

<td scope="row" align="left" valign="top" class="evenListRowS1" bgcolor="">
<a href="javascript:void(0)" onclick="send_back('Users','daac0d91-4481-2204-9b62-580600287265');">Mishra</a>
</td>

<td scope="row" align="left" valign="top" class="evenListRowS1" bgcolor="">
<a href="javascript:void(0)" onclick="send_back('Users','b559b4f3-20ee-9bb0-320d-5a4f630dea17');">email-address</a>
</td>

<td scope="row" align="left" valign="top" class="evenListRowS1" bgcolor="">
<a href="javascript:void(0)" onclick="send_back('Users','b559b4f3-20ee-9bb0-320d-5a4f630dea17');">+1 62900*2813</a>
</td>

<td scope="row" align="left" valign="top" class="evenListRowS1" bgcolor="">
Active
</td>

<td scope="row" align="left" valign="top" class="evenListRowS1" bgcolor="">
2018-09-30 02:33 PM
</td>

<td scope="row" align="left" valign="top" class="evenListRowS1" bgcolor="">
<input type="checkbox" disabled="disabled" class="checkbox">
</td>
</tr>

Я пытался

        driver.findElement(By.xpath(".//table[@class='list view']/tr[td[8][text()=\"Active\"]/td[1]")).click();

, но я получаю NoSuchElementException.

Ответы [ 2 ]

0 голосов
/ 01 октября 2018

По сути, вы хотите это:

  • Найти таблицу

    //table[@class='list view']
    
  • Пропустить что-нибудь между таблицей строки, так как они не важныв любом случае:

    //table[@class='list view']//tr
    
  • Найти строку, в которой значение столбца № 8 равно Active (поскольку вы используете фильтр, здесь легче определить положение по функции фильтра. Также на основе вашегоHTML, текст в этом столбце также содержит новые строки, поэтому text()='Active' не будет соответствовать, но contains будет:

    <...>/td[position()=8 and contains(text(),'Active')]
    
  • Получить столбец № 1 из той же строки.Поэтому вернитесь в область видимости строки с помощью .., а затем выберите другой столбец

    <...>/td[position()=8 and contains(text(),'Active')]/../td[1]
    

Полный xpath:

//table[@class='list view']//tr/td[position()=8 and contains(text(),'Active')]/../td[1]
0 голосов
/ 01 октября 2018

Вы пытались использовать x-path, чтобы найти ссылку, по которой хотите щелкнуть?Нечто подобное может работать, но вам нужно знать, как настроить это, чтобы оно работало в вашей ситуации.

//table[@id="myTable"]//tr[td[8][text()="Active"]]/td[1]
  • Найдите таблицу с //table[@id="myTable"].Измените id="myTable" на то, что однозначно идентифицирует вашу таблицу.
  • Найдите строку с помощью //tr[td[8][text()="Active"]].Это дает вам все строки, которые имеют «Active» в 8-м столбце.
  • Найдите первую ячейку в этой строке с помощью /td[1]
  • Найдите ссылку в этой ячейке /a

Вот пример на https://www.w3schools.com/html/html_tables.asp

//table[@id="customers"]/tbody/tr[td[2][text()="Maria Anders"]]/td[1]

, который выберет первую ячейку в первом ряду с «Марией Андерс» во 2-м столбце.

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