A small library for simplifying a table object in selenium
Project description
selenium-datatable
Overview
A small library for simplifying a table object in selenium
Installation
If you have pip on your system, you can simply install or upgrade the Python bindings:
pip install selenium-datatable
Alternately, you can download the source code and run:
python setup.py install
Usage
A table object class implementation:
# -- FILE: table.py
from selenium_datatable import RowItem, Container
class UserItem(RowItem):
locators_template = {
'last_name': ("css", "tr:nth-of-type({row}) td:nth-of-type(1)"),
'first_name': ("css", "tr:nth-of-type({row}) td:nth-of-type(2)"),
'email': ("css", "tr:nth-of-type({row}) td:nth-of-type(3)"),
'due': ("css", "tr:nth-of-type({row}) td:nth-of-type(4)"),
'web_site': ("css", "tr:nth-of-type({row}) td:nth-of-type(5)"),
'delete_button': ("css", "tr:nth-of-type({row}) td:nth-of-type(6) a[href='#delete']"),
'edit_button': ("css", "tr:nth-of-type({row}) td:nth-of-type(6) a[href='#edit']"),
}
class UserItems(Container):
item = UserItem()
rows_locator = ("css selector", "tbody > tr")
headers_locator = ("css selector", "tbody > tr")
A page object class implementation:
# -- FILE: home_page.py
from table import UserItems
class HomePage:
items_list = UserItems("id", "table1")
def __init__(self, driver, url='http://localhost/tables'):
self.driver = driver
self.url = url
def open(self):
self.driver.get(self.url)
Unittest:
# -- FILE: test_table.py
import unittest
from selenium.webdriver import Chrome
from home_page import HomePage
class TestTable(unittest.TestCase):
def setUp(self):
self.driver = Chrome()
def test_get_item_from_first_row(self):
page = HomePage(self.driver)
page.open()
item = page.items_list.get_item_by_position(1)
self.assertEqual(item.first_name.text, 'John')
self.assertEqual(item.last_name.text, 'Smith')
self.assertEqual(item.email.text, 'jsmith@gmail.com')
def tearDown(self):
self.driver.close()
The Container class is looking for a "driver" attribute in an owner class, but you can change that behaviour by overiding the attribute driver_attribute from the Container class.
class UserItems(Container):
item = UserItem()
rows_locator = ("css selector", "tbody > tr")
headers_locator = ("css selector", "tbody > tr")
driver_attribute = "selenium"
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Close
Hashes for selenium_datatable-0.2.1-py2.py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 49348b8c8a4f7bb55388c29dcab8c4915989aa7141730eb34176a5981bb2c524 |
|
MD5 | af14911e9d1466f9a212ed8ea9280965 |
|
BLAKE2b-256 | 377afa4c814a0d58e5cf21e65651a1ac52a15244a758de7ae1187bc1c7d7d0fd |