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.

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();
[…] das in einem älteren Artikel beschriebene und mit Selenium automatisierte Versenden von Tweets über die Twitter-GUI statt über die […]
[…] Schritte habe ich mit Unterstützung der Capture-Funktionalität erstellt. Im Vergleich zur direkten programmatischen Verwendung von Selenium war es mit dem TWS deutlich […]