A2oz

How to Access Tables in Selenium?

Published in Web Automation 3 mins read

Selenium, a popular web automation framework, provides various ways to interact with HTML tables. Here's how you can access and manipulate table data:

1. Locating the Table Element

  • Find the table element: Use Selenium's findElement() or findElements() methods to locate the table element on the web page. You can use different locators like ID, class, XPath, CSS Selector, etc.
  • Example:
    table_element = driver.find_element(By.XPATH, "//table[@id='myTable']")

2. Getting Table Rows and Cells

  • Get rows: Once you have the table element, you can use the findElements() method with the tag name 'tr' (table row) to get all rows in the table.
  • Get cells: Similarly, use the findElements() method with the tag name 'td' (table data) or 'th' (table header) to retrieve the cells within each row.
  • Example:
    rows = table_element.find_elements(By.TAG_NAME, "tr")
    for row in rows:
        cells = row.find_elements(By.TAG_NAME, "td")
        for cell in cells:
            print(cell.text)

3. Extracting Table Data

  • Iterate through rows and cells: Loop through each row and then each cell in the row to extract the data.
  • Get cell text: Use the text attribute of the cell element to retrieve the text content.
  • Store data: Store the extracted data in a suitable data structure like a list, dictionary, or dataframe for further analysis.

4. Working with Table Headers

  • Locate header cells: Use findElements() with the tag name 'th' to get the header cells.
  • Extract header text: Use the text attribute to obtain the header text.
  • Create dictionary keys: You can use the header text to create keys for a dictionary to store the table data.

5. Using Libraries for Table Parsing

  • Utilize libraries: Libraries like BeautifulSoup or pandas can simplify table data extraction and manipulation.
  • Example:
    from bs4 import BeautifulSoup
    table_html = driver.page_source
    soup = BeautifulSoup(table_html, 'html.parser')
    table = soup.find('table', id='myTable')
    for row in table.find_all('tr'):
        cells = row.find_all('td')
        data = [cell.text.strip() for cell in cells]
        print(data)

By following these steps, you can effectively access and manipulate tables in your Selenium automation scripts.

Related Articles