2013-03-26 13:24:37 +04:00

193 lines
4.1 KiB
Python

import logging
from selenium.webdriver.support.ui import Select
logging.basicConfig()
LOG = logging.getLogger(' Page object: ')
class TableCellClass:
table = None
def __init__(self, obj):
if not obj:
LOG.error('TableCell does not found')
self.table = obj
def Text(self):
if self.table:
return self.table.text()
else:
return ''
class ButtonClass:
button = None
def __init__(self, obj):
if not obj:
LOG.error('Button does not found')
self.button = obj
def Click(self):
if self.button:
self.button.click()
def isPresented(self):
if self.button:
return True
return False
class LinkClass:
link = None
def __init__(self, obj):
if not obj:
LOG.error('Link does not found')
self.link = obj
def Click(self):
if self.link:
self.link.click()
def isPresented(self):
if self.link:
return True
return False
def Address(self):
if self.link:
return self.link.get_attribute('href')
else:
return ''
class EditBoxClass:
def __init__(self, obj):
if not obj:
LOG.error('EditBox does not found')
self.edit = obj
def isPresented(self):
if self.edit:
return True
return False
def Set(self, value):
if self.edit:
self.edit.clear()
self.edit.send_keys(value)
def Text(self):
if self.edit:
return self.edit.get_text()
else:
return ''
class DropDownListClass:
select = None
def __init__(self, obj):
if not obj:
LOG.error('DropDownList does not found')
self.select = obj
def isPresented(self):
if self.select is not None:
return True
return False
def Set(self, value):
if self.select:
Select(self.select).select_by_visible_text(value)
def Text(self):
if self.select:
return self.select.get_text()
else:
return ''
error_msg = """
Object with parameter: %s
does not found on page.
"""
class Page:
driver = None
timeout = 30
def __init__(self, driver):
driver.set_page_load_timeout(30)
driver.implicitly_wait(0.01)
self.driver = driver
def _find_element(self, parameter):
obj = None
k = 0
while (obj is 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
LOG.error(error_msg % parameter)
return None
def Open(self, url):
self.driver.get(url)
def Refresh(self):
self.driver.refresh()
def TableCell(self, name):
obj = self._find_element(name)
table = TableCellClass(obj)
return table
def Button(self, name):
obj = self._find_element(name)
button = ButtonClass(obj)
return button
def Link(self, name):
obj = self._find_element(name)
link = LinkClass(obj)
return link
def EditBox(self, name):
obj = self._find_element(name)
edit = EditBoxClass(obj)
return edit
def DropDownList(self, name):
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()