# eaiautomatontools.information.retrieve_tabular

Present the information utilities for Selenium automaton.

Return the table data as a list of lists.


## Background

Launch a test web server serving controlled web pages on localhost port 8081

Use the python resources server.

    >>> from eaiautomatontools.resources.server import TestServer

    >>> myserver = TestServer()

    >>> myserver.start()

Instantiate a web driver using the eaiautomatontools.browserServer

    >>> from eaiautomatontools.browserServer import BrowserServer

    >>> myWebDriver = BrowserServer()

Use a default browser such as Chrome in 32 bit version

    >>> myWebDriver.browser_name = "chrome"

Serve the web driver

    >>> myWebDriver.serve()
    <BLANKLINE>
    <BLANKLINE>
    0

Open the popups test page

    >>> myWebDriver.go_to("http://127.0.0.1:8081/tables.html")
    0

## Nominal case

Import the information tool

    >>> from eaiautomatontools.information import retrieve_tabular

We will retrieve the first tabular in the page using the xpath locator and save the data into a `tab` variable

    >>> tab = retrieve_tabular(myWebDriver.webdriver, {"type": "xpath", "value": "/html/body/table[1]"})
    >>> tab
    [['First name', 'Last name'], ['John', 'Doe'], ['Jane', 'Doe']]

It works based on the `tr` and `td` tags. 
    
    >>> tab2 = retrieve_tabular(myWebDriver.webdriver, {"type": "xpath", "value": "/html/body/table[2]"})
    >>> tab2
    [['Header content 1', 'Header content 2'], ['Body content 1', 'Body content 2'], ['Footer content 1', 'Footer content 2']]

And it's case-insensitive

    >>> tab3 = retrieve_tabular(myWebDriver.webdriver, {"type": "xpath", "value": "/html/body/table[1]"}, ('TR', 'TD', 'TH'))
    >>> tab3
    [['First name', 'Last name'], ['John', 'Doe'], ['Jane', 'Doe']]

## Error cases

### Row and col tags are not found
    >>> tab = retrieve_tabular(myWebDriver.webdriver, {"type": "xpath", "value": "/html/body/table[1]"}, ('XR', 'XD', 'XH'))
    >>> tab
    []

### Table not found
    >>> tab = retrieve_tabular(myWebDriver.webdriver, {"type": "xpath", "value": "/html/body/table[7]"})
    Traceback (most recent call last):
    ...
    selenium.common.exceptions.NoSuchElementException: Message: Element designed by field '{'type': 'xpath', 'value': '/html/body/table[7]'}' could not be located.
    <BLANKLINE>

## Teardown

    >>> myWebDriver.close()
    0

    >>> myWebDriver = None

    >>> myserver.stop()

    >>> myserver = None
