Здравствуйте!
Скажите пожалуйста, кто знает, как в ассертах подтверждать нахождение ссылки на странице?
Вот нашел я по xpath ссылку в каком-либо теге (предварительно найдя её ВРУЧНУЮ). А как мне в тесте по ассерту подтвердить, что такое на странице есть?
Я на данный момент сделал вот так.
chromeDriver.get("https://www.google.com/");
WebElement searchField = chromeDriver.findElement(By.className("gLFyf"));
searchField.click();//клик по полю для активации поля, чтобы вводить буквы
searchField.sendKeys("Гладиолус"+ Keys.ENTER);//виртуальные нажатия клавиш
List<WebElement> resaultSearch = chromeDriver.findElements(By.xpath("//a[@href='https://ru.wikipedia.org/wiki/%D0%A8%D0%BF%D0%B0%D0%B6%D0%BD%D0%B8%D0%BA']"));
//создание списка с типом данных WebElement для помещения в него элементов, найденных по xpath
System.out.println(resaultSearch.size());//вывод размерности списка
resaultSearch.stream().forEach(x-> System.out.println(x));//создание потока для вывода из списка по forEach элементов списка
Т.е. просто через лист вывожу в консоль количество имеющихся элементов на странице.
А я хочу, чтобы ассерт мне говорил, да есть такая ссылка там, всё ок. Причем не именно найденная мной ВРУЧНУЮ ссылка со всякими подробностями и оформленная в xpath, а корневая (в данном случае Википедия)
Смысл в том, что я сначала нахожу ссылку САМ. делаю xpath, вставляю его в код, запускаю тест. Мне думается, что смысл теста теряется, я уже всё оттестировал ВРУЧНУЮ, найдя ВРУЧНУЮ эту ссылку и сотворив в коде этот xpath.
А мне надо вставлять в код БАЗОВЫЙ адрес и проверять, выскочит ли там где-нибудь википедия или нет.
Я сейчас сделал асерт по части текста ссылки, но что-то не сработал. При том, что я ТОЧНО знаю, что такая ссылка там есть.
Может с кодом что-то не так?
Код вот такой.
String url="https://ru.wikipedia.org";
chromeDriver.get("www.google.com");
WebElement searchField = chromeDriver.findElement(By.className("gLFyf"));
searchField.click();//клик по полю для активации поля, чтобы вводить буквы
searchField.sendKeys("Гладиолус"+ Keys.ENTER);//виртуальные нажатия клавиш
List<WebElement> resaultSearch = chromeDriver.findElements(By.xpath("//a[@href='https://ru.wikipedia.org/wiki/%D0%A8%D0%BF%D0%B0%D0%B6%D0%BD%D0%B8%D0%BA']"));
//создание списка с типом данных WebElement для помещения в него элементов, найденных по xpath
System.out.println(resaultSearch.size());//вывод размерности списка
resaultSearch.stream().forEach(x-> System.out.println(x));//создание потока для вывода из списка по forEach элементов списка
Assertions.assertTrue((BooleanSupplier) chromeDriver.findElement(By.partialLinkText(url)));
//String url="https://ru.wikipedia.org";
chromeDriver.get("https://www.google.com/");
WebElement searchField = chromeDriver.findElement(By.className("gLFyf"));
searchField.click();//клик по полю для активации поля, чтобы вводить буквы
searchField.sendKeys("Гладиолус"+ Keys.ENTER);//виртуальные нажатия клавиш
// List<WebElement> resaultSearch = chromeDriver.findElements(By.xpath("//a[@href='https://ru.wikipedia.org/wiki/%D0%A8%D0%BF%D0%B0%D0%B6%D0%BD%D0%B8%D0%BA']"));
// //создание списка с типом данных WebElement для помещения в него элементов, найденных по xpath
List<WebElement> resaultSearch = chromeDriver.findElements(By.partialLinkText("https://ru.wikipedia.org"));
//создание списка с типом данных WebElement для помещения в него элементов, найденных по xpath
System.out.println(resaultSearch.size());//вывод размерности списка
resaultSearch.stream().forEach(x-> System.out.println(x));//создание потока для вывода из списка по forEach элементов списка
//Assertions.assertTrue((BooleanSupplier) chromeDriver.findElement(By.partialLinkText("https://ru.wikipedia.org")));
XPath: //a[contains(@href, 'wikipedia.org')]
Или CSS: a[href*='wikipedia.org']
Ну или partialLinkText если он тут работает, но он же вроде ищет в тексте, а не в адресе.
И непонятно как это с ассертом связано-то, не важно что искать, если использовать findElements, то проверить успешность поиска можно например по количеству возвращенных элементов.