Fixed automated tests for WebUI. Added class Page with simple objects.
This commit is contained in:
parent
1af2c35688
commit
eaddba5640
@ -1,56 +1,36 @@
|
||||
import re
|
||||
from login_page import LoginPage
|
||||
from services_page import ServicesPage
|
||||
import page
|
||||
|
||||
|
||||
class DataCentersPage():
|
||||
class DataCentersPage(page.Page):
|
||||
page = None
|
||||
|
||||
def __init__(self):
|
||||
start_page = LoginPage()
|
||||
self.page = start_page.login()
|
||||
self.page.find_element_by_link_text('Project').click()
|
||||
self.page.find_element_by_link_text('Windows Data Centers').click()
|
||||
|
||||
def create_data_center(self, name):
|
||||
button_text = 'Create Windows Data Center'
|
||||
self.page.find_element_by_link_text(button_text).click()
|
||||
|
||||
name_field = self.page.find_element_by_id('id_name')
|
||||
self.Button('Create Windows Data Center').Click()
|
||||
|
||||
self.EditBox('id_name').Set(name)
|
||||
xpath = "//input[@value='Create']"
|
||||
button = self.page.find_element_by_xpath(xpath)
|
||||
self.Button(xpath).Click()
|
||||
|
||||
name_field.clear()
|
||||
name_field.send_keys(name)
|
||||
|
||||
button.click()
|
||||
|
||||
return self.page
|
||||
|
||||
def find_data_center(self, name):
|
||||
return self.page.find_element_by_link_text(name)
|
||||
return self
|
||||
|
||||
def delete_data_center(self, name):
|
||||
datacenter = self.find_data_center(name)
|
||||
link = datacenter.get_attribute('href')
|
||||
link = self.Link(name).Address()
|
||||
datacenter_id = re.search('windc/(\S+)', link).group(0)[6:-1]
|
||||
|
||||
xpath = ".//*[@id='windc__row__%s']/td[3]/div/a[2]" % datacenter_id
|
||||
more_button = self.page.find_element_by_xpath(xpath)
|
||||
self.Button(xpath).Click()
|
||||
|
||||
more_button.click()
|
||||
button_id = "windc__row_%s__action_delete" % datacenter_id
|
||||
self.Button(button_id).Click()
|
||||
|
||||
delete_button_id = "windc__row_%s__action_delete" % datacenter_id
|
||||
delete_button = self.page.find_element_by_id(delete_button_id)
|
||||
self.Button("Delete Data Center").Click()
|
||||
|
||||
delete_button.click()
|
||||
|
||||
self.page.find_element_by_link_text("Delete Data Center").click()
|
||||
|
||||
return self.page
|
||||
return self
|
||||
|
||||
def select_data_center(self, name):
|
||||
datacenter = self.page.find_data_center(name)
|
||||
datacenter.click()
|
||||
self.page = ServicesPage(self.page)
|
||||
return self.page
|
||||
self.Link(name).Click()
|
||||
page = ServicesPage(self.driver)
|
||||
return page
|
||||
|
@ -1,8 +1,8 @@
|
||||
import ConfigParser
|
||||
from selenium import webdriver
|
||||
import page
|
||||
|
||||
|
||||
class LoginPage():
|
||||
class LoginPage(page.Page):
|
||||
|
||||
def login(self):
|
||||
config = ConfigParser.RawConfigParser()
|
||||
@ -11,20 +11,11 @@ class LoginPage():
|
||||
user = config.get('server', 'user')
|
||||
password = config.get('server', 'password')
|
||||
|
||||
page = webdriver.Firefox()
|
||||
page.set_page_load_timeout(30)
|
||||
page.implicitly_wait(30)
|
||||
page.get(url)
|
||||
name = page.find_element_by_name('username')
|
||||
pwd = page.find_element_by_name('password')
|
||||
self.Open(url)
|
||||
|
||||
self.EditBox('username').Set(user)
|
||||
self.EditBox('password').Set(password)
|
||||
xpath = "//button[@type='submit']"
|
||||
button = page.find_element_by_xpath(xpath)
|
||||
self.Button(xpath).Click()
|
||||
|
||||
name.clear()
|
||||
name.send_keys(user)
|
||||
pwd.clear()
|
||||
pwd.send_keys(password)
|
||||
|
||||
button.click()
|
||||
|
||||
return page
|
||||
return self
|
||||
|
130
tests/selenium/page.py
Normal file
130
tests/selenium/page.py
Normal file
@ -0,0 +1,130 @@
|
||||
from selenium import webdriver
|
||||
|
||||
|
||||
class ButtonClass:
|
||||
button = None
|
||||
|
||||
def __init__(self, object):
|
||||
self.button = object
|
||||
|
||||
def Click(self):
|
||||
self.button.click()
|
||||
|
||||
def isPresented(self):
|
||||
if self.button != None:
|
||||
return True
|
||||
return False
|
||||
|
||||
|
||||
class LinkClass:
|
||||
link = None
|
||||
|
||||
def __init__(self, object):
|
||||
self.link = object
|
||||
|
||||
def Click(self):
|
||||
self.link.click()
|
||||
|
||||
def isPresented(self):
|
||||
if self.link != None:
|
||||
return True
|
||||
return False
|
||||
|
||||
def Address(self):
|
||||
return self.link.get_attribute('href')
|
||||
|
||||
|
||||
class EditBoxClass:
|
||||
edit = None
|
||||
|
||||
def __init__(self, object):
|
||||
self.edit = object
|
||||
|
||||
def isPresented(self):
|
||||
if self.edit != None:
|
||||
return True
|
||||
return False
|
||||
|
||||
def Set(self, value):
|
||||
self.edit.clear()
|
||||
self.edit.send_keys(value)
|
||||
|
||||
def Text(self):
|
||||
return self.edit.get_text()
|
||||
|
||||
|
||||
class DropDownListClass:
|
||||
select = None
|
||||
|
||||
def __init__(self, object):
|
||||
self.select = object
|
||||
|
||||
def isPresented(self):
|
||||
if self.select != None:
|
||||
return True
|
||||
return False
|
||||
|
||||
def Set(self, value):
|
||||
self.select.select_by_visible_text(value)
|
||||
|
||||
def Text(self):
|
||||
return self.select.get_text()
|
||||
|
||||
|
||||
class Page:
|
||||
|
||||
driver = None
|
||||
timeout = 30
|
||||
|
||||
def __init__(self, driver):
|
||||
driver.set_page_load_timeout(30)
|
||||
driver.implicitly_wait(30)
|
||||
self.driver = driver
|
||||
|
||||
def _find_element(self, parameter):
|
||||
object = None
|
||||
try:
|
||||
object = self.driver.find_element_by_name(parameter)
|
||||
return object
|
||||
except:
|
||||
pass
|
||||
try:
|
||||
object = self.driver.find_element_by_id(parameter)
|
||||
return object
|
||||
except:
|
||||
pass
|
||||
try:
|
||||
object = self.driver.find_element_by_xpath(parameter)
|
||||
return object
|
||||
except:
|
||||
pass
|
||||
try:
|
||||
object = self.driver.find_element_by_link_text(parameter)
|
||||
return object
|
||||
except:
|
||||
pass
|
||||
|
||||
return object
|
||||
|
||||
def Open(self, url):
|
||||
self.driver.get(url)
|
||||
|
||||
def Button(self, name):
|
||||
object = self._find_element(name)
|
||||
button = ButtonClass(object)
|
||||
return button
|
||||
|
||||
def Link(self, name):
|
||||
object = self._find_element(name)
|
||||
link = LinkClass(object)
|
||||
return link
|
||||
|
||||
def EditBox(self, name):
|
||||
object = self._find_element(name)
|
||||
edit = EditBoxClass(object)
|
||||
return edit
|
||||
|
||||
def DropDownList(self, name):
|
||||
object = self._find_element(name)
|
||||
select = DropDownListClass(object)
|
||||
return select
|
@ -1,57 +1,33 @@
|
||||
import ConfigParser
|
||||
from selenium import webdriver
|
||||
import page
|
||||
import re
|
||||
|
||||
|
||||
class ServicesPage():
|
||||
page = None
|
||||
|
||||
def __init__(self, page):
|
||||
self.page = page
|
||||
class ServicesPage(page.Page):
|
||||
|
||||
def create_service(self, service_type, parameters):
|
||||
|
||||
button_id = 'services__action_CreateService'
|
||||
button = self.page.find_element_by_id(button_id)
|
||||
button.click()
|
||||
|
||||
self.select_type_of_service(service_type)
|
||||
self.Button('services__action_CreateService').Click()
|
||||
self.DropDownList('0-service').Set(service_type)
|
||||
self.Button('wizard_goto_step').Click()
|
||||
|
||||
for parameter in parameters:
|
||||
field = self.page.find_element_by_name(parameter.key)
|
||||
field.clear()
|
||||
field.send_keys(parameter.value)
|
||||
self.EditBox(parameter.key).Set(parameter.value)
|
||||
|
||||
xpath = "//input[@value='Deploy']"
|
||||
deploy_button = self.page.find_element_by_xpath(xpath)
|
||||
deploy_button.click()
|
||||
self.Button("//input[@value='Create']").Click()
|
||||
|
||||
return page
|
||||
|
||||
def select_type_of_service(self, service_type):
|
||||
type_field = self.page.find_element_by_name('0-service')
|
||||
type_field.select_by_visible_text(service_type)
|
||||
next_button = self.page.find_element_by_name('wizard_goto_step')
|
||||
next_button.click()
|
||||
return self.page
|
||||
|
||||
def find_service(self, name):
|
||||
return self.page.find_element_by_link_text(name)
|
||||
return self
|
||||
|
||||
def delete_service(self, name):
|
||||
service = self.find_data_center(name)
|
||||
link = service.get_attribute('href')
|
||||
link = self.Link(name).Address()
|
||||
|
||||
service_id = re.search('windc/(\S+)', link).group(0)[6:-1]
|
||||
|
||||
xpath = ".//*[@id='services__row__%s']/td[5]/div/a[2]" % service_id
|
||||
more_button = self.page.find_element_by_xpath(xpath)
|
||||
more_button.click()
|
||||
self.Button(xpath).Click()
|
||||
|
||||
delete_button_id = "services__row_%s__action_delete" % datacenter_id
|
||||
delete_button = self.page.find_element_by_id(delete_button_id)
|
||||
button_id = "services__row_%s__action_delete" % service_id
|
||||
self.Button(button_id).Click()
|
||||
|
||||
delete_button.click()
|
||||
self.Button("Delete Service").Click()
|
||||
|
||||
self.page.find_element_by_link_text("Delete Service").click()
|
||||
|
||||
return self.page
|
||||
return self
|
||||
|
Loading…
x
Reference in New Issue
Block a user