Webanwendungen automatisch testen

Christian Fein

Erfahrenes Mitglied
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:

Python:
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()
 
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. :)
 
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

Code:
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
 
Hallo,

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

Installation: gems install -r mechanize

Code:
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
 

Neue Beiträge

Zurück