# Webanwendungen automatisch testen



## Christian Fein (1. Juli 2006)

Wer kennt nicht das Problem, mann programmiert an einer Webanwendung und muss Formulare immer wieder neu ausfüllen wenn man auf der Fehlersuche ist.
Das endet doch oft im nervigen durchklicken. Zwar helfen Browseraddons die jene Formulare ausfüllen, dennoch ist man immer beschäftigt.

Eine Lösung heisst Twill twill: a simple scripting language for Web browsing :

In Python geschrieben mit einer einfachen API.

Beispiel:

Testen des Anmeldevorgangs auf tutorials.de:


```
from twill.browser import TwillBrowser
import sys

def error_and_quit(msg):
    sys.stderr.write(msg)
    sys.exit(1)

if __name__ == "__main__":
    browser = TwillBrowser()
    try:
        browser.go("http://www.tutorials.de")
    except:
        error_and_quit("nicht erreichbar- exit!")
    form1 = browser.get_form("1")
    if form1 == None:
        error_and_quit("Formular nicht gefunden, arghh")
    try:
        username_field = browser.get_form_field(form1,r'.*username.*')
        password_field = browser.get_form_field(form1,r'.*login_password.*')
    except:
        error_and_quit("Formularfelder nicht gefunden!")
    username_field.value = "Christian Fein"
    password_field.value = "bindochichtdoof"
    req = form.click()
```


----------



## Dennis Wronka (1. Juli 2006)

Hmm, das werd ich mir mal angucken muessen. Da ist sicher interessant.
Vor allem in Hinblick darauf seine Scripts automatisiert auf diverse Schwachstellen wie Code- oder SQL-Injection oder auch auf Cross-Site-Scripting zu testen.

Dafuer guck ich mir dann sogar jetzt mal Python an.


----------



## AKST (2. Juli 2006)

Sieht interessant aus. Werde ich mir mal genauer anschauen.


----------



## Matthias Reitinger (8. Juli 2006)

Hallo,

Ruby kann ähnliches mit Watir: Web Application Testing in Ruby erreichen. Läuft bis jetzt leider nur auf Windowsplatformen mit dem IE. An Firefox-Unterstützung wird aber gearbeitet.

Installation: gem install -r watir


```
require 'watir'
include Watir

ie = IE.new

begin
  ie.goto("http://www.tutorials.de")

  ie.text_field(:name, "vb_login_username").set("Matthias Reitinger")
  ie.text_field(:name, "vb_login_password").set("supergeheimespasswort")

  ie.form(:index, 1).submit
rescue Exception => e
  puts "Error: " + e
ensure
  ie.close
end
```

Grüße,
 Matthias


----------



## Christian Fein (14. Juli 2006)

Matthias Reitinger hat gesagt.:
			
		

> Hallo,
> 
> Ruby kann ähnliches mit Watir: Web Application Testing in Ruby erreichen. Läuft bis jetzt leider nur auf Windowsplatformen mit dem IE. An Firefox-Unterstützung wird aber gearbeitet.



Interressante Sache, ein anderes Vorgehen. Twill ist selber ein Browser, Watir nimmt den ie zur hilfe.

Muss ich mir auch mal anschaun


----------



## Matthias Reitinger (18. Juli 2006)

Hallo,

kleines Update: was Twill für Python, its Mechanize für Ruby:

Installation: gems install -r mechanize


```
require 'mechanize'

agent = WWW::Mechanize.new

page = agent.get('http://www.tutorials.de/')

login_form = page.forms.first
login_form.vb_login_username = 'Matthias Reitinger'
login_form.vb_login_password = 'sesamöffnedich'

page_after_login = agent.submit(login_form)

puts page_after_login.body
```

Grüße,
 Matthias


----------

