Ich wuerde gern vor jedem Click-Aufruf z.B. die verstrichene Zeit speichern, vor jeder Aktion wuerde ich gern eine Pruefung auf vorhandene Popups durchfuehren etc. Natuerlich kann ich das im Code machen(Heisst: vor jeder zeile mit click action die zeit speichern etc), nur wuerde der Code dadurch sehr unuebersichtlich und nicht mehr wartbar werden.
Code: Alles auswählen
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import Select
from selenium.common.exceptions import NoSuchElementException
import unittest, time, re
class SeleniumTest(unittest.TestCase):
def setUp(self):
self.driver = webdriver.Firefox()
self.driver.implicitly_wait(30)
self.base_url = "https://meine.baseurl.de/"
self.verificationErrors = []
def test_tc_w_d(self):
driver = self.driver
print("Der Test wird gestartet: {0}".format(time.strftime("%H:%M:%S",time.localtime())))
start_time=time.time()
driver.get(self.base_url + "/security/login")
driver.find_element_by_id("site.login.username").clear()
driver.find_element_by_id("site.login.username").send_keys("user")
driver.find_element_by_id("site.login.password").clear()
driver.find_element_by_id("site.login.password").send_keys("pw")
driver.find_element_by_id("site.login.submit").click()
if self.is_element_present(By.ID, "ui-site-alert"):
driver.find_element_by_xpath("//button[@type='button']").click()
print("Es wurde eine Notification weggeklickt")
driver.find_element_by_xpath("//nav[@id='main-nav']/ul/li[2]/a").click()
...
wobei action1, ..., actionn eine Klasse ist, der ich das Kommando als String uebergebe.
Dies ist keine Gute Loesung, weil ich dann in der Liste aus Tupeln in den Kommando strings alle Anfuehrungszeichen escapen muss, weil es Probleme gibt mit den Variablen, die in setUp() definiert sind, usw. Der Code wird dadurch nicht leserlicher.
Hat Jemand ne Idee, wie ich das oben geschilderte Problem anders angehen koennte?
Danke schon mal