Web-Automatisierung durch Web-Test-Tools: Beispiel Selenium

Oftmals besteht die Anforderung, Daten aus bestehenden Webseiten (z.B. soziale Netzwerke) automatisiert auszulesen bzw. in diese zu schreiben.

Der saubere (und auch stabilere) Weg dazu ist sicherlich die Nutzung der entsprechenden APIs, die inzwischen von einem Großteil der relevanten Seiten zur Verfügung gestellt werden (siehe auch ein früherer Artikel).

Wenn dies jedoch nicht möglich ist, besteht auch noch die Alternative der Nutzung von Tools für den automatisierten Test von Webseiten. Ein relativ bekanntes Tool bzw. Toolsuite in diesem Umfeld ist Selenium.

U.a. kann man mit diesem Tool bzw. der Komponente „WebDriver“ unterschiedliche Browser (insb. Firefox) „fernsteuern“ und somit automatisiert auf Webseiten lesend oder schreibend zugreifen. Die Webseite selbst kann den Unterschied i.d.R. nur schwer feststellen, z.B. durch Analyse der Tastengeschwindigkeit.

Um Selenium für diesen Anwendungsfall zu testen, habe ich eine kleine Java/Swing-Anwendung erstellt, mit der es zu Testzwecken möglich ist, automatisiert einen Tweet in Twitter einzustellen (siehe Abbildung und Source-Ausschnitt darunter).

Grundsätzlich sollten natürlich sowohl bei der Nutzung von APIs als auch von Web-Automatisierungs-Tools die Nutzungsbedingungen der jeweiligen Webseite berücksichtigt werden.

Testprogramm zum Zugriff auf Twitter über Selenium Webdriver
Testprogramm zum Zugriff auf Twitter über Selenium WebDriver

Hier noch der Codeausschnitt für die Nutzung des WebDrivers (kann man sicher eleganter und besser lösen, war aber nur ein Test):

// Browser starten

WebDriver driver = new FirefoxDriver();

// Twitter öffnen

driver.get(„http://www.twitter.com „);

// Login

WebElement query = driver.findElement(By.id(„signin-email“));
query.sendKeys(„XXX“);

query = driver.findElement(By.id(„signin-password“));
query.sendKeys(„YYY“);

query = driver.findElement(By.cssSelector(„.flex-table-btn“));
query.click();

// Text in Tweet-Box schreiben

query = driver.findElement(By.id(„tweet-box-mini-home-profile“));
query.sendKeys(tweet);

query = driver.findElement(By.cssSelector(„div.toolbar:nth-child(10) > div:nth-child(2) > button:nth-child(3)“));
query.click();

Oliver Höß

Kommentar verfassen

Trage deine Daten unten ein oder klicke ein Icon um dich einzuloggen:

WordPress.com-Logo

Du kommentierst mit Deinem WordPress.com-Konto. Abmelden / Ändern )

Twitter-Bild

Du kommentierst mit Deinem Twitter-Konto. Abmelden / Ändern )

Facebook-Foto

Du kommentierst mit Deinem Facebook-Konto. Abmelden / Ändern )

Google+ Foto

Du kommentierst mit Deinem Google+-Konto. Abmelden / Ändern )

Verbinde mit %s