Ваш тест не ожидал появления результатов, поэтому он заполнил бы список пустыми элементами, поскольку страница была загружена не полностью. Я обновил ваш код, чтобы вызвать WebDriverWait
, а также обновил ваш локатор XPath до более надежного. Я протестировал эту функцию и успешно получил четвертый результат поиска.
@Test
public void searchInGoogleAndAssertTheFourthResult() {
WebElement searchBox = driver.findElement(By.XPath("q"));
searchBox.sendKeys("TestNG");
searchBox.sendKeys(Keys.ENTER);
// wait for elements to exist
new WebDriverWait(driver, 10).until(ExpectedConditions.presenceOfAllElementsLocatedBy(By.XPath("//a/h3/div")));
// get list of search result elements
List <WebElement> results = driver.findElements(By.XPath("//a/h3/div"));
String fourthResult = results.get(3).getText();
// The exact title is not just "TestNG Tutorial", there is more text
// need to change this to a contains
Assert.assertTrue(fourthResult.contains("TestNG Tutorial"));
// this one will not work
Assert.assertEquals(fourthResult, "TestNG Tutorial");
}
}
Обратите внимание, что ваш оператор Assert.assertEquals
не будет выполнен, поскольку ни один из результатов поиска не является точным соответствием "TestNG Tutorial". У них также есть другой текст, такой как "TestNG Tutorial: Аннотации, Framework, Примеры в ...". Таким образом, вместо этого вы должны выполнить свой запрос assert против contains
.