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
|
import re
|
||||||
from login_page import LoginPage
|
|
||||||
from services_page import ServicesPage
|
from services_page import ServicesPage
|
||||||
|
import page
|
||||||
|
|
||||||
|
|
||||||
class DataCentersPage():
|
class DataCentersPage(page.Page):
|
||||||
page = None
|
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):
|
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']"
|
xpath = "//input[@value='Create']"
|
||||||
button = self.page.find_element_by_xpath(xpath)
|
self.Button(xpath).Click()
|
||||||
|
|
||||||
name_field.clear()
|
return self
|
||||||
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)
|
|
||||||
|
|
||||||
def delete_data_center(self, name):
|
def delete_data_center(self, name):
|
||||||
datacenter = self.find_data_center(name)
|
link = self.Link(name).Address()
|
||||||
link = datacenter.get_attribute('href')
|
|
||||||
datacenter_id = re.search('windc/(\S+)', link).group(0)[6:-1]
|
datacenter_id = re.search('windc/(\S+)', link).group(0)[6:-1]
|
||||||
|
|
||||||
xpath = ".//*[@id='windc__row__%s']/td[3]/div/a[2]" % datacenter_id
|
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
|
self.Button("Delete Data Center").Click()
|
||||||
delete_button = self.page.find_element_by_id(delete_button_id)
|
|
||||||
|
|
||||||
delete_button.click()
|
return self
|
||||||
|
|
||||||
self.page.find_element_by_link_text("Delete Data Center").click()
|
|
||||||
|
|
||||||
return self.page
|
|
||||||
|
|
||||||
def select_data_center(self, name):
|
def select_data_center(self, name):
|
||||||
datacenter = self.page.find_data_center(name)
|
self.Link(name).Click()
|
||||||
datacenter.click()
|
page = ServicesPage(self.driver)
|
||||||
self.page = ServicesPage(self.page)
|
return page
|
||||||
return self.page
|
|
||||||
|
@ -1,8 +1,8 @@
|
|||||||
import ConfigParser
|
import ConfigParser
|
||||||
from selenium import webdriver
|
import page
|
||||||
|
|
||||||
|
|
||||||
class LoginPage():
|
class LoginPage(page.Page):
|
||||||
|
|
||||||
def login(self):
|
def login(self):
|
||||||
config = ConfigParser.RawConfigParser()
|
config = ConfigParser.RawConfigParser()
|
||||||
@ -11,20 +11,11 @@ class LoginPage():
|
|||||||
user = config.get('server', 'user')
|
user = config.get('server', 'user')
|
||||||
password = config.get('server', 'password')
|
password = config.get('server', 'password')
|
||||||
|
|
||||||
page = webdriver.Firefox()
|
self.Open(url)
|
||||||
page.set_page_load_timeout(30)
|
|
||||||
page.implicitly_wait(30)
|
self.EditBox('username').Set(user)
|
||||||
page.get(url)
|
self.EditBox('password').Set(password)
|
||||||
name = page.find_element_by_name('username')
|
|
||||||
pwd = page.find_element_by_name('password')
|
|
||||||
xpath = "//button[@type='submit']"
|
xpath = "//button[@type='submit']"
|
||||||
button = page.find_element_by_xpath(xpath)
|
self.Button(xpath).Click()
|
||||||
|
|
||||||
name.clear()
|
return self
|
||||||
name.send_keys(user)
|
|
||||||
pwd.clear()
|
|
||||||
pwd.send_keys(password)
|
|
||||||
|
|
||||||
button.click()
|
|
||||||
|
|
||||||
return page
|
|
||||||
|
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
|
import page
|
||||||
from selenium import webdriver
|
import re
|
||||||
|
|
||||||
|
|
||||||
class ServicesPage():
|
class ServicesPage(page.Page):
|
||||||
page = None
|
|
||||||
|
|
||||||
def __init__(self, page):
|
|
||||||
self.page = page
|
|
||||||
|
|
||||||
def create_service(self, service_type, parameters):
|
def create_service(self, service_type, parameters):
|
||||||
|
|
||||||
button_id = 'services__action_CreateService'
|
self.Button('services__action_CreateService').Click()
|
||||||
button = self.page.find_element_by_id(button_id)
|
self.DropDownList('0-service').Set(service_type)
|
||||||
button.click()
|
self.Button('wizard_goto_step').Click()
|
||||||
|
|
||||||
self.select_type_of_service(service_type)
|
|
||||||
|
|
||||||
for parameter in parameters:
|
for parameter in parameters:
|
||||||
field = self.page.find_element_by_name(parameter.key)
|
self.EditBox(parameter.key).Set(parameter.value)
|
||||||
field.clear()
|
|
||||||
field.send_keys(parameter.value)
|
|
||||||
|
|
||||||
xpath = "//input[@value='Deploy']"
|
self.Button("//input[@value='Create']").Click()
|
||||||
deploy_button = self.page.find_element_by_xpath(xpath)
|
|
||||||
deploy_button.click()
|
|
||||||
|
|
||||||
return page
|
return self
|
||||||
|
|
||||||
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)
|
|
||||||
|
|
||||||
def delete_service(self, name):
|
def delete_service(self, name):
|
||||||
service = self.find_data_center(name)
|
link = self.Link(name).Address()
|
||||||
link = service.get_attribute('href')
|
|
||||||
|
|
||||||
service_id = re.search('windc/(\S+)', link).group(0)[6:-1]
|
service_id = re.search('windc/(\S+)', link).group(0)[6:-1]
|
||||||
|
|
||||||
xpath = ".//*[@id='services__row__%s']/td[5]/div/a[2]" % service_id
|
xpath = ".//*[@id='services__row__%s']/td[5]/div/a[2]" % service_id
|
||||||
more_button = self.page.find_element_by_xpath(xpath)
|
self.Button(xpath).Click()
|
||||||
more_button.click()
|
|
||||||
|
|
||||||
delete_button_id = "services__row_%s__action_delete" % datacenter_id
|
button_id = "services__row_%s__action_delete" % service_id
|
||||||
delete_button = self.page.find_element_by_id(delete_button_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
|
||||||
|
|
||||||
return self.page
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user