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.webdriver.common.by import By from selenium_datatable import DataTable, Column class UsersTable(DataTable): rows_locator = (By.CSS_SELECTOR, "tbody > tr") headers_locator = (By.CSS_SELECTOR, "thead > tr > th") # columns last_name = Column(By.CSS_SELECTOR, "tr:nth-of-type({row}) td:nth-of-type(1)") first_name = Column(By.CSS_SELECTOR, "tr:nth-of-type({row}) td:nth-of-type(2)") email = Column(By.CSS_SELECTOR, "tr:nth-of-type({row}) td:nth-of-type(3)") due = Column(By.CSS_SELECTOR, "tr:nth-of-type({row}) td:nth-of-type(4)") web_site = Column(By.CSS_SELECTOR, "tr:nth-of-type({row}) td:nth-of-type(5)") delete_button = Column(By.CSS_SELECTOR, "tr:nth-of-type({row}) td:nth-of-type(6) a[href='#delete']") edit_button = Column(By.CSS_SELECTOR, "tr:nth-of-type({row}) td:nth-of-type(6) a[href='#edit']")
A page object class implementation:
# -- FILE: home_page.py from table import UsersTable class HomePage: items_list = UsersTable("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() self.page = HomePage(self.driver) self.page.open() def test_get_item_from_first_row(self): item = self.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 test_get_item_by_property(self): item = self.page.items_list.get_item_by_property(last_name='Doe', first_name='Jason') assert item.first_name.text == 'Jason' assert item.last_name.text == 'Doe' def test_number_of_rows(self): assert len(self.page.items_list) == 4 def test_iterate_through_rows(self): for row in self.page.items_list: assert hasattr(row, 'last_name') 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.
Filename, size | File type | Python version | Upload date | Hashes |
---|---|---|---|---|
Filename, size selenium_datatable-0.3.0-py3-none-any.whl (11.1 kB) | File type Wheel | Python version py3 | Upload date | Hashes View |
Filename, size selenium_datatable-0.3.0.win32.zip (16.7 kB) | File type Source | Python version None | Upload date | Hashes View |
Close
Hashes for selenium_datatable-0.3.0-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | de1e96c0a1c71be5eb705f0ee02faea7023c2e9b4a8eb037e06594d96cf11f4b |
|
MD5 | 69928f1f32acc30a28b01e556ec67de6 |
|
BLAKE2-256 | 81d9a941e2d86a994480a78cc8cda5e096bdb9dbd48fa268f8252313d8b2a8d7 |
Close
Hashes for selenium_datatable-0.3.0.win32.zip
Algorithm | Hash digest | |
---|---|---|
SHA256 | 19ebd3b940c827cb2c3c06f2ba119f57407a57c88e61a55fa4c6518e95956363 |
|
MD5 | 818ff48a6a78aa255b07a052a81e893f |
|
BLAKE2-256 | cdfecc7f32e24941354d7d27cb6b5d808b0db907b1eb5e9bc32992e209533306 |