Fixed automated tests for web UI.

This commit is contained in:
Timur Nurlygayanov 2013-03-25 15:04:10 +04:00
parent eaddba5640
commit c138799465
4 changed files with 84 additions and 69 deletions

View File

@ -1,4 +1,4 @@
[server]
address=http://172.18.124.101
user=admin
password=AkvareL707
password=swordfish

View File

@ -20,7 +20,9 @@ class DataCentersPage(page.Page):
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
print 'Data Center ID: ' + datacenter_id
xpath = ".//*[@id='windc__row__%s']/td[4]/div/a[2]" % datacenter_id
self.Button(xpath).Click()
button_id = "windc__row_%s__action_delete" % datacenter_id

View File

@ -1,11 +1,10 @@
from selenium import webdriver
class ButtonClass:
button = None
def __init__(self, object):
self.button = object
def __init__(self, obj):
self.button = obj
def Click(self):
self.button.click()
@ -19,8 +18,8 @@ class ButtonClass:
class LinkClass:
link = None
def __init__(self, object):
self.link = object
def __init__(self, obj):
self.link = obj
def Click(self):
self.link.click()
@ -35,10 +34,9 @@ class LinkClass:
class EditBoxClass:
edit = None
def __init__(self, object):
self.edit = object
def __init__(self, obj):
self.edit = obj
def isPresented(self):
if self.edit != None:
@ -56,8 +54,8 @@ class EditBoxClass:
class DropDownListClass:
select = None
def __init__(self, object):
self.select = object
def __init__(self, obj):
self.select = obj
def isPresented(self):
if self.select != None:
@ -72,59 +70,68 @@ class DropDownListClass:
class Page:
driver = None
timeout = 30
timeout = 300
def __init__(self, driver):
driver.set_page_load_timeout(30)
driver.implicitly_wait(30)
driver.implicitly_wait(0.01)
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
obj = None
k = 0
while (obj == None and k < self.timeout):
k += 1
try:
obj = self.driver.find_element_by_name(parameter)
return obj
except:
pass
try:
obj = self.driver.find_element_by_id(parameter)
return obj
except:
pass
try:
obj = self.driver.find_element_by_xpath(parameter)
return obj
except:
pass
try:
obj = self.driver.find_element_by_partial_link_text(parameter)
return obj
except:
pass
return obj
def Open(self, url):
self.driver.get(url)
def Button(self, name):
object = self._find_element(name)
button = ButtonClass(object)
obj = self._find_element(name)
button = ButtonClass(obj)
return button
def Link(self, name):
object = self._find_element(name)
link = LinkClass(object)
obj = self._find_element(name)
link = LinkClass(obj)
return link
def EditBox(self, name):
object = self._find_element(name)
edit = EditBoxClass(object)
obj = self._find_element(name)
edit = EditBoxClass(obj)
return edit
def DropDownList(self, name):
object = self._find_element(name)
select = DropDownListClass(object)
return select
obj = self._find_element(name)
select = DropDownListClass(obj)
return select
def Navigate(self, path):
steps = path.split(':')
for step in steps:
self.Button(step).Click()

View File

@ -1,54 +1,60 @@
# -*- coding: utf-8 -*-
import untitest2
import unittest2
from login_page import LoginPage
from datacenters_page import DataCentersPage
from selenium import webdriver
class SanityTests(unittest2.TestCase):
def setUp(self):
self.page = DataCentersPage()
driver = webdriver.Firefox()
self.page = LoginPage(driver)
self.page.login()
self.page.Navigate('Project:Windows Data Centers')
self.page = DataCentersPage(driver)
def tearDown(self):
self.page.close()
self.page.driver.close()
def test_01_create_data_center(self):
self.page.create_data_center('dc1')
assert self.page.find_data_center('dc1') is not None
assert self.page.Link('dc1').isPresented()
def test_02_delete_data_center(self):
self.page.delete_data_center('dc1')
assert self.page.find_data_center('dc1') is None
assert not self.page.Link('dc1').isPresented()
def test_03_create_data_centers(self):
for i in range(1, 20):
name = 'datacenter' + str(i)
self.page.create_data_center(name)
assert self.page.find_data_center(name) is not None
assert self.page.Link(name).isPresented()
def test_04_delete_data_centers(self):
self.page.delete_data_center('datacenter1')
self.page.delete_data_center('datacenter20')
assert self.page.find_data_center('datacenter1') is None
assert self.page.find_data_center('datacenter20') is None
assert not self.page.Link('datacenter1').isPresented()
assert not self.page.Link('datacenter20').isPresented()
for i in range(2, 19):
name = 'datacenter' + str(i)
assert self.page.find_data_center(name) is not None
assert self.page.Link(name).isPresented()
def test_05_create_service_ad(self):
name = 'dc001.local'
self.page.create_data_center(name)
self.select_data_center(name)
self.page.create_data_center('test')
self.page.select_data_center('test')
ad_parameters = {'1-dc_name': name,
'1-dc_count': 1,
'1-adm_password': 'AkvareL707!',
'1-recovery_password': 'AkvareL707!'}
self.page.create_service('Active Directory', ad_parameters)
assert self.page.find_service(name) is not None
assert self.page.Link(name).isPresented()
if __name__ == '__main__':
unittest2.main()
unittest2.main()