2011-10-10 12 views
7

Używam najnowszej wersji Selenium i chromedriver do testowania aplikacji ZK.Jak uzyskać aktualny DOM z Selenium Java 2.8?

Podczas testu chciałbym rzucić DOM (lub jego część), aby pomóc mi znaleźć elementy, których potrzebuję (i prawdopodobnie pomóc ludziom, którzy muszą utrzymać test).

Metoda WebDriver.getPageSource() wyglądała obiecująco, ale zwraca tylko kod HTML, ponieważ został wysłany przez serwer, a nie wynik po uruchomieniu całego kodu JavaScript.

Kod JavaScript jest uruchamiany; Mogę znaleźć elementy według identyfikatora, których nie widzę na wyjściu getPageSource(). Próbowałem więc WebElement.getText(), ale to tylko tekst elementów, a nie same elementy czy ich atrybuty.

Czy to możliwe, aby uzyskać DOM lub czy muszę zrobić operację dziurki od klucza?

Odpowiedz

1

Mam to samo pytanie, ale naprawdę jedyny sposób znalazłem to zrobić jest 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); 
     } 

dlaczego robi By.DOM Przez wsparcie z funkcją ja naprawdę nie wiem .. Podejrzewam, że jest to spowodowane potrzebą webdrivera dla wielu przeglądarek itp.

+0

OK, ponieważ strona zawiera jQuery, mógłbym dostać to, co chcę, uruchamiając '$ (argumenty [0]). Html()', myślę, że : - / –

Powiązane problemy