Website auslesen mit WebDriver (Selenium)


#1

Hi Leute!

Habe mich die letzten Tage mit “Selenium” (http://docs.seleniumhq.org/) auseinandergesetzt, mit dem Ziel, Formulare auf einer Website ausfüllen und abschicken zu lassen. Das hat auch einige Male ganz gut geklappt, aber jetzt bin ich bei einer Seite angekommen, in deren Quelltext die Formulare nicht zu finden sind. Offenbar wird dieser bestimmte Teil der Seite (also der, der die Formulare enthält) mit Javascript (nachfolgend JS) generiert.
Daher meine Frage: Gibt es eine Möglichkeit, sich den “nach-JS-Quelltext” zu beschaffen?

Ich habe schon probiert, alle JS-Funktionen, die im ursprünglichen Quelltext enthalten sind mit Hilfe von Selenium (JavascriptExecutor) auszuführen, aber der Quelltext blieb unverändert.

Mir fehlen gerade echt die Ideen. Hat schon jemand Erfahrung mit dem Thema gemacht?

Gruß, Basti


#2

Wenn du Firefox oder Chrome verwendest, gibts da mehrere Addons, die das können. Ich verwend z.B. im FF den Firebug, da kann ich ganz gut den DOM untersuchen, JS debuggen und testen, …


#3

Ich bin ein Freund von den Devtools im Chrome. Einfach Rechtsklick -> Inspect Element und du siehst den dynamisch generierten Code. Funktioniert im Firebug genauso. Im IE musst du in den Devtools auf Refresh drücken.

Dem Selenium-Code ist ja ziemlich wurscht ob der DOM-Baum sofort oder im Nachhinein generiert wird. Wichtig ist nur, dass du dem Code etwas Zeit gibts. Z.B. so:

WebDriver driver = new FirefoxDriver();
driver.get("http://somedomain/url_that_delays_loading");
WebElement myDynamicElement = (new WebDriverWait(driver, 10))
  .until(ExpectedConditions.presenceOfElementLocated(By.id("myDynamicElement")));```

Stammt aus der [Doku](http://docs.seleniumhq.org/docs/04_webdriver_advanced.jsp).

Ich hab so relativ aufwendige Tests geschrieben für komplett JS getriebene Webanwendungen.