Как мне получить текущий DOM с помощью Selenium Java 2.8?

#dom #selenium #junit #zk

#dom #селен #junit #zk

Вопрос:

Я использую последнюю версию Selenium и chromedriver для тестирования приложения ZK.

Во время теста я хотел бы сбросить DOM (или его часть), чтобы помочь мне найти нужные мне элементы (и, возможно, помочь людям, которые должны поддерживать тест).

Метод WebDriver.getPageSource() выглядел многообещающим, но он возвращает только HTML-код в том виде, в каком он был отправлен сервером, а не результат после выполнения всего кода JavaScript.

Код JavaScript запущен; я могу найти элементы по идентификатору, которые я не вижу в выходных getPageSource() данных. Итак, я попытался WebElement.getText() , но это только текст элементов, а не сами элементы или их атрибуты.

Возможно ли вообще получить DOM или мне нужно сделать операцию с замочной скважиной здесь?

Ответ №1:

На самом деле у меня тот же вопрос, но единственный способ, который я нашел для этого, — executeScript:

 /// <summary>
        /// Gets the parentElement/Node of a particular element
        /// </summary>
        /// <param name="driver"></param>
        /// <param name="element"></param>
        /// <returns></returns>
        public static IWebElement GetElementParent(IWebDriver driver,IWebElement element)
        {
            return (IWebElement) ((IJavaScriptExecutor)driver).ExecuteScript("return arguments[0].parentNode", element);
        }
  

почему By не поддерживает By.DOM с функцией, которую я действительно не знаю…Я подозреваю, что это связано с необходимостью webdriver для нескольких браузеров и т. Д

Комментарии:

1. Хорошо, поскольку страница содержит jQuery, я мог бы получить то, что хочу, запустив $(arguments[0]).html() , я думаю :-/