193 lines
4.1 KiB
Python
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()
|