Я немного не в себе, но я сделаю все возможное, чтобы объяснить. Я поставлю свой вопрос наверху, а затем объясню ниже:
"Как мне сказать Selenium читать только результаты, которые видны в браузере, а не то, что содержится в источнике страницы?"
У меня есть веб-страница, для которой я создаю автоматизированные тесты с использованием Selenium WebDriver. На странице есть таблица результатов, обычно около 50 или около того. Когда пользователь заходит на страницу, отображаются все результаты. Если они вводят текст в поле поиска, они могут отфильтровать результаты. Ничего фантастического. Моя цель - убедиться, что количество результатов, возвращаемых таблицей, соответствует ожидаемому числу.
Код, который я использовал для подсчета количества результатов, таков:
public int searchTableNumberOfMatchesOneColumn(String tableIdParam, int columnToSearchParam, String valueToFindParam){
int numberOfMatchesFound = 0;
WebElement table_element = driver.findElement(By.id(tableIdParam));
List<WebElement> tr_collection=table_element.findElements(By.xpath("id('" + tableIdParam + "')/tbody/tr"));
int row_num = 1;
int col_num = 1;
for(WebElement trElement : tr_collection)
{
List<WebElement> td_collection=trElement.findElements(By.xpath("td"));
col_num=1;
for(WebElement tdElement : td_collection)
{
if(col_num == columnToSearchParam && tdElement.getText().equals(valueToFindParam)){
numberOfMatchesFound++;
}
col_num++;
}
row_num++;
}
return numberOfMatchesFound;
}
Проблема, с которой я сталкиваюсь, заключается в следующем: этот код всегда возвращает полный размер таблицы, 50 или около того, а не количество результатов, видимых на экране. Я открыл источник страницы для веб-страницы до и после поиска, чтобы сделать сравнение, и они идентичны. Таким образом, в то время как то, что видимо пользователю, изменяется, то, что хранится в источнике страницы, нет.
Я пытался использовать JavascriptExecutor для поиска innerHTML, но он возвращает те же результаты. (Как и в случае с driver.findElement (By.tagName ("body")). GetText ();
Любая помощь приветствуется.