Как пройти через объект DOM с C #? - PullRequest
0 голосов
/ 30 апреля 2018

У меня есть веб-страница, где мне нужно пройти через DOM, чтобы найти все элементы, которые имеют class, который начинается с "accordion-toggle ". Каждый такой объект получает подобный класс, назначенный, когда виджет аккордеона открывается / закрывается: enter image description here

Чтобы выполнить автоматический тест черного ящика для Ranorex, когда все аккордеоны щелкаются и проверяется их поведение, мне нужен DOM-подобный объект, который содержит все аккордеоны на странице, чтобы автоматизированное тестовое ПО могло щелкать по объектам и проверять ведут ли они себя должным образом. Как я могу извлечь эту информацию? Я в течение двух дней пытаюсь увидеть довольно иерархическую структуру страницы и задаюсь вопросом, есть ли простой способ извлечь эту информацию.

Edit:

На самом деле, есть способ сделать это, но я получаю System.OutOfMemoryException, хотя на сервере достаточно памяти. Вот, пожалуйста:

    /// <summary>
    /// Finds the accordion widgets
    /// </summary>
    public void FindAccordionWidgets()
    {
        Report.Log(ReportLevel.Info, "Code", "FindAccordionWidgets() started…");
        IList<Ranorex.Unknown> elementList = repo.Home.Self.Find<Ranorex.Unknown>("//*[@class~'accordion-toggle'][@visible='true']");
        Report.Log(ReportLevel.Info, "Code", "elementList populated.");

        foreach (Ranorex.Unknown elementItem in elementList)
        {
            // Do whatever you want here
            Report.Log(ReportLevel.Info, "Code", "elementItem " + elementItem.FlavorName + isOfType + elementItem.GetType());
        }
    }
...