Два экземпляра кода, которые у вас есть, по сути одинаковы, и я не вижу причин, по которым они будут работать по-разному. Я думаю, что это проблема времени. Чтобы заставить его вести себя более последовательно, я бы добавил ожидание появления кнопки обзора. Поскольку кнопка может отсутствовать время от времени, она выдаст исключение тайм-аута, поэтому вам нужно будет отловить это, чтобы иметь чистый проход / неудачу для каждого запуска. Чтобы сделать это, я бы использовал приведенную ниже функцию, которая возвращает логическое значение в зависимости от того, существует элемент или нет после ожидания.
public static boolean elementExists(By locator, int timeout)
{
try
{
new WebDriverWait(driver, timeout).until(ExpectedConditions.presenceOfElementLocated(locator));
return true;
} catch (Exception e)
{
return false;
}
}
Приведенный выше метод проверяет наличие элемента, что означаетэто существует в DOM? Если вы хотите убедиться, что он действительно виден (а не только присутствует), вы можете изменить .presenceOfElementLocated()
на .visibilityOfElementLocated()
.
Поскольку вы новичок в Selenium, я бы также порекомендовал вам использоватьобщая библиотека для выполнения ваших проверок, таких как JUnit или TestNG. Это избавит вас от необходимости писать свой собственный код для валидации и проходить процесс поиска ошибок в вашем собственном коде. Используя JUnit, вы должны использовать
Assert.assertTrue("Verify the review button exists", elementExists(By.xpath("//ul[@class='comments_advices']"), 10));
См. Документы JUnit .