Вы можете использовать JS метод для получения текста из скрытого веб-элемента и поставщик данных для проверки, включен ли пункт меню, это может быть так:
@DataProvider
public Object[][] getProductMenu() {
return new Object[][]{
{"What is nopCommerce"},
{"Why nopCommerce"},
{"Features"},
{"Store demo"},
{"Showcase"},
{"Case studies"},
{"Roadmap"},
{"Copyright notice removal"},
{"License"}
};
}
@Test(dataProvider = "getProductMenu")
public void checkProductMenu(String menuItemName) {
driver.get("https://www.nopcommerce.com/");
// check if menu item is enabled
Assert.assertTrue(isMenuItemExistInMenu(menuItemName));
}
public boolean isMenuItemExistInMenu(String menuItemName) {
List<WebElement> menuItemsElements = driver.findElements(By.xpath("//ul[@class='top-menu']/li[1]//ul/li/a"));
for (WebElement menuItemsElement : menuItemsElements) {
if (getHiddenTextByWebElement(menuItemsElement).equals(menuItemName)) {
System.out.println("Menu item [" + menuItemName + "]" + " is enabled in Product submenu");
return true;
}
}
return false;
}
//this is JS method for get hidden text from WebElement
private String getHiddenTextByWebElement(WebElement element) {
try {
return (String) driver.executeScript("return arguments[0].innerHTML", element);
} catch (Exception e) {
Assert.fail("Can't return hidden text, occur error: \n" + e.getMessage());
return "";
}
}