Я хотел бы утверждать, что строка таблицы содержит данные, которые я ожидаю в двух разных таблицах.
Используя следующий HTML в качестве примера:
<table>
<tr>
<th>Table 1</th>
</tr>
<tr>
<td>Row 1 Col 1</td>
<td>Row 1 Col 2</td>
</tr>
</table>
<table>
<tr>
<th>Table 2</th>
</tr>
<tr>
<td>Row 1 Col 1</td>
<td>different data</td>
</tr>
</table>
Проходит следующее утверждение:
$this->assertElementPresent('css=table:contains(Table 1)');
Однако это не так:
$this->assertElementPresent('css=table:contains(Table 1) tr:contains(Row 1 Col 1)');
И, наконец, мне нужно иметь возможность проверить, что оба столбца в строке таблицы содержат ожидаемые данные:
$this->assertElementPresent('css=table:contains(Table 1) tr:contains(Row 1 Col 1):contains(Row 1 Col 2)');
$this->assertElementPresent('css=table:contains(Table 2) tr:contains(Row 1 Col 1):contains(different data)');
Что я делаю неправильно? Как я могу этого добиться?
Обновлять:
Похоже, проблема заключается в ошибке в Selenium при попытке выбрать потомков.
Единственный способ заставить это работать — добавить в таблицу дополнительный идентификатор, чтобы я мог сказать, с каким из них я работаю:
/* HTML */
<table id="table-1">
/* PHP */
$this->assertElementPresent("css=#table-1 tr:contains(Row 1 Col 1):contains(Row 1 Col 2)");