Невозможно настроить таргетинг на второй экземпляр класса CSS с помощью веб-драйвера в C# автоматическом тестировании - PullRequest
0 голосов
/ 08 апреля 2020

Я создаю автоматизированное приложение 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-й экземпляр класса на этом скриншоте

...