Я создаю автоматизированное приложение C#, чтобы проверить, правильно ли работает основная навигация веб-страницы.
До сих пор мне удавалось открыть каждую из вкладок и проверить наличие наложения, однако Мне нужно иметь возможность щелкать по вторичным элементам навигации после открытия этих оверлеев.
Все содержимое в 5 раскрывающихся контейнерах первичной навигации имеет одинаковое имя класса ".mainnav__content". Похоже, не существует никаких уникальных идентификаторов для этих экземпляров класса, но, перемещаясь по DOM в моем веб-браузере, я могу указать целевой контейнер с помощью команды консоли: document.querySelectorAll('.mainnav__inner')[1]
в моем C# приложение, которое мне удалось нацелить на первый экземпляр, используя Assert.AreEqual(true, driver.FindElement(By.CssSelector(".mainnav__inner")).Displayed);
Возможно ли то, что я пытаюсь сделать?
Если вы посмотрите на скриншот , прикрепленный вы увидите, где я выделил, где возникает проблема. 1-я строка работает так, как задумано, но вторая - где у меня проблемы.
Вот тестовый пример целиком:
[Test(Description = "Check all nav button Opens up the correct secondary nav options")]
public void TopNavPanels__Load()
{
int[] numbers = { 1, 2, 3, 4, 5 };
//string navitems = topNavItems;
driver.Navigate().GoToUrl(homeURL);
WebDriverWait wait = new WebDriverWait(driver,
System.TimeSpan.FromSeconds(15));
wait.Until(driver =>
driver.FindElement(By.TagName("body")));
Assert.Multiple(() =>
{
foreach (int i in numbers)
{
clickNavItems(topNavItems[i - 1], topNavItemsNPlace[i - 1]);
Assert.AreEqual(true, driver.FindElement(By.CssSelector("document.querySelectorAll('.mainnav__inner')[i - 1]")).Displayed);
Console.WriteLine("'" + topNavItems[i - 1] + "' Panel opens when clicked");
}
});
}
Невозможно нацелить 2-й экземпляр класса на этом скриншоте