Рубрики
Без рубрики

Как обрабатывать веб-таблицу в Webdriver Selenium?

Веб-таблицы или таблицы данных часто используются в сценариях, где вам нужно отобразить информацию в … Теги с Python, Selenium, Webdriver, Automation.

Веб-таблицы или таблицы данных часто используются в сценариях, где вам нужно отобразить информацию в табличном формате. Отображаемые данные могут быть либо статичными или динамическими в природе. Вы часто видите такие примеры в порталах электронной коммерции, где спецификации продукта отображаются в веб-таблице. С его широким использованием вы часто встречаетесь с сценариями, где вам нужно будет обрабатывать их в ваших сценариях автоматизации тестирования Selenium.

В этом учении Webdriver Webdriver я посмотрю, как обрабатывать веб-таблицу в селене вместе с несколькими полезными операциями, которые могут быть выполнены на веб-таблицах. К концу этого учебника вы получите тщательное понимание веб-таблиц в автоматизации тестирования Selenium, а также методологии, используемые для доступа к содержимому в веб-таблице. Чтобы узнать больше о Что такое селен , вы можете обратиться к нашей подробной странице на тему.

Что такое веб-таблица в селене?

Веб-таблица в Selenium – это WebElement, как и любые другие популярные веб-элементы, такие как текстовые поля, радиопередачи, флажки, раскрывающиеся меню и т. Д. Веб-таблица и его содержимое могут быть доступны с помощью функций WebElement вместе с локаторами для идентификации элемента (строки/столбца), на которой необходимо выполнить операцию.

Стол состоит из рядов и колонн. Таблица, создаваемая для веб-страницы, называется веб-таблицей. Ниже приведены некоторые из важных тегов, связанных с веб-таблицей:

  • <таблица> – Определяет таблицу HTML
  • – содержит информацию заголовка в таблице
  • – определяет ряд в таблице
  • – Определяет столбец в таблице

Типы веб-таблиц в Selenium

Есть две широкие категории таблиц а именно:

Статический веб-таблица

Как указывает имя, информация в таблице статически в природе.

Динамическая веб-таблица

Информация, отображаемая в таблице, является динамической. Например. Подробная информация о продукте на веб-сайтах электронной коммерции, отчеты о продажах и т. Д.

Для демонстрации, чтобы обработать таблицу в селене, мы используем таблицу, которая доступна в W3School HTML таблица страница. Хотя проблемы с тестированием кросс-браузера меньше, когда используют таблицы, некоторые из Старые версии браузера Internet Explorer, Chrome и других веб-браузеров не поддерживают API на таблицу HTML.

Теперь, когда мы охватывали основы, затем в этом учебном пособие в Webdriver Selenium я посмотрю на некоторые часто используемые операции для обработки таблиц в Selenium, который поможет в ваших усилиях автоматизации тестирования Selenium.

Обработка веб-таблиц в селене

Я буду использовать локальный Webdriver Selenium для выполнения действий браузера для обработки таблицы в селене, присутствует на W3Schools HTML Table страница. HTML-код для веб-таблицы, используемый для демонстрации, доступен в Тытайте адаптер страница.

Webdriver Selenium для популярных браузеров можно скачать из расположенных ниже местоположений:

Я буду использовать Python Unittest Framework для обработки таблиц в Webdriver селена. Основная логика для доступа к элементам в веб-таблицах все еще остается неизменным, даже если вы используете другие языки программирования для Тестовая автоматизация селена Отказ

Примечание. – Реализация в настройке () и разрыве () остается прежней для всех сценариев. Мы не повторим этот раздел в каждом примере, показанном в блоге.

Обработка номера рядов и столбцов в веб-таблице

Тег в таблице Указывает строки в таблице, и этот тег используется для получения информации о количестве строк в нем. Количество столбцов веб-таблицы в селене рассчитывается с помощью XPath (//* [ @id ]/TBOBE/TR [2]/TD). XPath of Rows и столбцов получены с использованием инструмента проверки в браузере для обработки таблиц в селении для Автоматическое тестирование браузера Отказ

Хотя заголовок в веб-столе не , Тег все еще можно использовать в текущем примере для расчета количества столбцов. XPath для вычисления количества столбцов, использующих Тег -//* [ @id ]/Тобб/Тр//готовность

Добавляют WebDriverwait в 30 секунд, чтобы убедиться, что загрузка веб-пример на таблице) завершена до выполнения любых операций для обработки таблицы в селене.

Получите количество строк для веб-таблицы в селене

num_rows = len (driver.find_elements_by_xpath("//*[@id='customers']/tbody/tr"))

Получить количество столбцов для веб-таблицы в селене

num_cols = len (driver.find_elements_by_xpath("//*[@id='customers']/tbody/tr[2]/td"))

Полная реализация

import unittest
import time
from selenium import webdriver
from selenium.webdriver.support.select import Select
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

test_url = "https://www.w3schools.com/html/html_tables.asp"

class WebTableTest(unittest.TestCase):

    def setUp(self):
        self.driver = webdriver.Chrome()
        self.driver.maximize_window()

    def test_1_get_num_rows_(self):
        driver = self.driver
        driver.get(test_url)

        WebDriverWait(driver, 60).until(EC.presence_of_element_located((By.CLASS_NAME, "w3-example")))

        num_rows = len (driver.find_elements_by_xpath("//*[@id='customers']/tbody/tr"))
        print("Rows in table are " + repr(num_rows))

    def test_2_get_num_cols_(self):
        driver = self.driver
        driver.get(test_url)

        WebDriverWait(driver, 60).until(EC.presence_of_element_located((By.CLASS_NAME, "w3-example")))
        # num_cols = len (driver.find_elements_by_xpath("//*[@id='customers']/tbody/tr/th"))
        num_cols = len (driver.find_elements_by_xpath("//*[@id='customers']/tbody/tr[2]/td"))
        print("Columns in table are " + repr(num_cols))

    def tearDown(self):
        self.driver.close()
        self.driver.quit()

if __name__ == "__main__":
    unittest.main()

Ниже приведен выходной снимок

Распечатать содержимое веб-таблицы в селене

Чтобы получить доступ к контенту, присутствующему в каждой строке и столбце, чтобы обработать таблицу в селене, мы повторяем каждый ряд ( ) в веб-таблице. Как только детали о строках получаются, мы повторяем Теги под этим ряд.

В этом случае для этого учебного пособия Webdriver Webdriver обе строки ( ) и столбцы ( ) будут переменной. Следовательно, номера строк и номера столбцов вычисляются динамически. Ниже показано, что XPath для доступа к информации в определенных строках и столбцах:

  • XPath для доступа к ряд: 2, столбец: 2 -//* [ @id ]/TBOBE/TR [2]/TD [1]
  • XPath для доступа к ряд: 3, столбец: 1 -//* [ @id ]/TBOBE/TR [3]/TD [1]

Таблица, на которой проводится автоматизация Selenium Test, имеет 7 строк и 3 столбца. Следовательно, вложенное для петли выполняется со строками, начиная от 2..7 и колонн, начиная от 1..4. Переменные факторы I.e. Номер ряд и номер столбца добавляются для сформулирования Final XPath.

for t_row in range(2, (rows + 1)):
  for t_column in range(1, (columns + 1)):
      FinalXPath = before_XPath + str(t_row) + aftertd_XPath + str(t_column) + aftertr_XPath
      cell_text = driver.find_element_by_xpath(FinalXPath).text

Ниже приведены ниже в этом учебном пособии Webdriver Webdriver, является полной реализацией, чтобы получить все содержимое, присутствующее для обработки таблицы в селене.

import unittest
import time
test_url = "https://www.w3schools.com/html/html_tables.asp"

before_XPath = "//*[@id='customers']/tbody/tr["
aftertd_XPath = "]/td["
aftertr_XPath = "]"

    def test_get_row_col_info_(self):
        driver = self.driver
        driver.get(test_url)

        # time.sleep(30)
        WebDriverWait(driver, 60).until(EC.presence_of_element_located((By.CLASS_NAME, "w3-example")))

        rows = len(driver.find_elements_by_xpath("//*[@id='customers']/tbody/tr"))
        # print (rows)
        columns = len(driver.find_elements_by_xpath("//*[@id='customers']/tbody/tr[2]/td"))
        # print(columns)

        # print("Company"+"               "+"Contact"+"               "+"Country")

        for t_row in range(2, (rows + 1)):
            for t_column in range(1, (columns + 1)):
                FinalXPath = before_XPath + str(t_row) + aftertd_XPath + str(t_column) + aftertr_XPath
                cell_text = driver.find_element_by_xpath(FinalXPath).text
                # print(cell_text, end = '               ')
                print(cell_text)
            print()   

Выходной снимок для печати контента для обработки таблицы в селене ниже:

Читайте данные в строках для обработки таблицы В селении

Для доступа к контенту, присутствующему в каждой строке, чтобы обрабатывать таблицу в селене, строки ( ) являются переменными, тогда как столбцы ( ) останутся постоянными. Следовательно, строки вычисляются динамически. Ниже в этом уроке Webdriver Webdriver – это XPath для доступа к информации со строками, являющимися переменным фактором и столбцами, остающимися постоянными для автоматизации тестирования селена.

  • XPath для доступа к ряд: 1, столбец: 1 -//* [ @id ]/TBOBE/TR [1]/TD [1]
  • XPath для доступа к ряд: 2, столбец: 2 -//* [ @id ]/TBOBE/TR [2]/TD [2]
  • XPath для доступа к ряд: 3, столбец: 2 -//* [ @id ]/TBOBE/TR [3]/TD [2]

А для петли выполняется со строками, начиная от 2,7. Значения столбцов добавляются к XPath – это TD [1]/TD [2]/TD [3] в зависимости от доступа к ряду и столбцу, которое необходимо обращаться к обработке таблицы в селене.

before_XPath = "//*[@id='customers']/tbody/tr["
aftertd_XPath_1 = "]/td[1]"
aftertd_XPath_2 = "]/td[2]"
aftertd_XPath_3 = "]/td[3]"

for t_row in range(2, (rows + 1)):
    FinalXPath = before_XPath + str(t_row) + aftertd_XPath_1
    cell_text = driver.find_element_by_xpath(FinalXPath).text
    print(cell_text)

Полная реализация

#Selenium webdriver tutorial  to handletable in Selenium for Selenium test automation
import unittest
import time
from selenium import webdriver
from selenium.webdriver.support.select import Select
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

test_url = "https://www.w3schools.com/html/html_tables.asp"

before_XPath = "//*[@id='customers']/tbody/tr["
aftertd_XPath_1 = "]/td[1]"
aftertd_XPath_2 = "]/td[2]"
aftertd_XPath_3 = "]/td[3]"
#aftertr_XPath = "]"

    def test_get_row_col_info_(self):
        driver = self.driver
        driver.get(test_url)

        # time.sleep(30)
        WebDriverWait(driver, 60).until(EC.presence_of_element_located((By.CLASS_NAME, "w3-example")))

        rows = len(driver.find_elements_by_xpath("//*[@id='customers']/tbody/tr"))
        # print (rows)
        columns = len(driver.find_elements_by_xpath("//*[@id='customers']/tbody/tr[2]/td"))
        # print(columns)

        print("Data present in Rows, Col - 1")
        print()
        for t_row in range(2, (rows + 1)):
            FinalXPath = before_XPath + str(t_row) + aftertd_XPath_1
            cell_text = driver.find_element_by_xpath(FinalXPath).text
            print(cell_text)

        print()    
        print("Data present in Rows, Col - 2")
        print()
        for t_row in range(2, (rows + 1)):
            FinalXPath = before_XPath + str(t_row) + aftertd_XPath_2
            cell_text = driver.find_element_by_xpath(FinalXPath).text
            print(cell_text)

        print()
        print("Data present in Rows, Col - 3")
        print()
        for t_row in range(2, (rows + 1)):
            FinalXPath = before_XPath + str(t_row) + aftertd_XPath_3
            cell_text = driver.find_element_by_xpath(FinalXPath).text
            print(cell_text) 

Выходной снимок для чтения данных в строках для обработки таблицы в селене ниже:

Для разумного доступа к столбцу для обработки таблицы в селене ряда остаются постоянными, тогда как номера столбцов являются переменной I.e. Столбцы динамически вычисляются. Ниже в этом уроке Webdriver Webdriver является XPath для доступа к информации, где столбцы являются переменными, а строки постоянны.

  • XPath для доступа к ряд: 2, столбец: 2 -//* [ @id ]/TBOBE/TR [2]/TD [2]
  • XPath для доступа к ряд: 2, столбец: 3 -//* [ @id ]/TBOBE/TR [2]/TD [3]
  • XPath для доступа к ряд: 2, столбец: 4 -//* [ @id ]/TBOBE/TR [2]/TD [4]

A для петли выполняется с столбцами, начиная от 1..4 Значения строки добавляются к XPath – это Tr [1]/TR [2]/TR [3] в зависимости от доступа к доступе к строке и столбцу.

before_XPath_1 = "//*[@id='customers']/tbody/tr[1]/th["
before_XPath_2 = "//*[@id='customers']/tbody/tr[2]/td["
after_XPath = "]"

for t_col in range(1, (num_columns + 1)):
   FinalXPath = before_XPath_1 + str(t_col) + after_XPath
   cell_text = driver.find_element_by_xpath(FinalXPath).text
   print(cell_text)

Полная реализация

import unittest
import time
from selenium import webdriver
from selenium.webdriver.support.select import Select
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

test_url = "https://www.w3schools.com/html/html_tables.asp"

before_XPath_1 = "//*[@id='customers']/tbody/tr[1]/th["
before_XPath_2 = "//*[@id='customers']/tbody/tr[2]/td["
after_XPath = "]" 

def test_get_row_col_info_(self):
        driver = self.driver
        driver.get(test_url)

        # time.sleep(30)
        WebDriverWait(driver, 60).until(EC.presence_of_element_located((By.CLASS_NAME, "w3-example")))

        num_rows = len(driver.find_elements_by_xpath("//*[@id='customers']/tbody/tr"))
        # print (rows)
        num_columns = len(driver.find_elements_by_xpath("//*[@id='customers']/tbody/tr[2]/td"))
        # print(columns)

        print("Data present in Col - 1 i.e. Title")
        print()
        for t_col in range(1, (num_columns + 1)):
            FinalXPath = before_XPath_1 + str(t_col) + after_XPath
            cell_text = driver.find_element_by_xpath(FinalXPath).text
            print(cell_text)

        print("Data present in Col - 2")
        print()
        for t_col in range(1, (num_columns + 1)):
            FinalXPath = before_XPath_2 + str(t_col) + after_XPath
            cell_text = driver.find_element_by_xpath(FinalXPath).text
            print(cell_text)

Как видно в снимке исполнения, колонна заголовка также читается для получения заголовка столбцов.

Расположение элемента для обработки таблицы В селении

Намерение этого теста для этого учебного пособия Webdriver Selenium состоит в том, чтобы искать присутствие элемента в веб-таблице. Для выполнения того же, контент в каждой и каждой ячейке веб-таблицы прочитан и сравнивается с поиском срока. Если элемент присутствует, соответствующая строка и элемент напечатаны для обработки таблицы в селене.

Поскольку он включает в себя чтение данных в каждой ячейке, мы используем логику, охватываемую в разделе, под названием «Печать содержимого веб-таблицы в селении». Поиск нечувствитедие к регистру для проверки наличия поискового сестра для обработки таблицы в селене.

for t_row in range(2, (num_rows + 1)):
  for t_column in range(1, (num_columns + 1)):
      FinalXPath = before_XPath + str(t_row) + aftertd_XPath + str(t_column) + aftertr_XPath
      cell_text = driver.find_element_by_xpath(FinalXPath).text
      if ((cell_text.casefold()) == (search_text.casefold())):
         print("Search Text "+ search_text +" is present at row " + str(t_row) + " and column " + str(t_column))
         elem_found = True
         break

Полная реализация

import unittest
import time
from selenium import webdriver
from selenium.webdriver.support.select import Select
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

test_url = "https://www.w3schools.com/html/html_tables.asp"

before_XPath_1 = "//*[@id='customers']/tbody/tr[1]/th["
before_XPath_2 = "//*[@id='customers']/tbody/tr[2]/td["
after_XPath = "]"

search_text = "mAgazzini Alimentari rIUniti"

    def test_get_row_col_info_(self):
        driver = self.driver
        driver.get(test_url)

        # time.sleep(30)
        WebDriverWait(driver, 60).until(EC.presence_of_element_located((By.CLASS_NAME, "w3-example")))

        num_rows = len(driver.find_elements_by_xpath("//*[@id='customers']/tbody/tr"))
        num_columns = len (driver.find_elements_by_xpath("//*[@id='customers']/tbody/tr[2]/td"))

        elem_found = False

        for t_row in range(2, (num_rows + 1)):
            for t_column in range(1, (num_columns + 1)):
                FinalXPath = before_XPath + str(t_row) + aftertd_XPath + str(t_column) + aftertr_XPath
                cell_text = driver.find_element_by_xpath(FinalXPath).text
                if ((cell_text.casefold()) == (search_text.casefold())):
                    print("Search Text "+ search_text +" is present at row " + str(t_row) + " and column " + str(t_column))
                    elem_found = True
                    break
        if (elem_found == False):
            print("Search Text "+ search_text +" not found")

Как видно на снимке исполнения для этого учебного пособия Webdriver Selenium, поисковый термин присутствовал при ряд-7 и столбце-1

Хотя существует много таких операций, можно проводить на веб-таблице в селене, мы охватывали основные аспекты в этом учебном пособие в Webdriver.

В общем

Веб-таблицы обычно используются, когда информация должна отображаться в табличном формате. Информация в клетках может быть статичной или динамичной. Веб-таблицы в селене проверены с использованием API-APIS WebElement вместе с использованием соответствующих локаторов, таких как XPath, имя класса CSS, ID CSS и т. Д.

Надеюсь, вам понравился этот учебник Webdriver Webdriver для обработки таблицы в селене. Оставьте свои мысли по использованию веб-таблиц в Selenium Test Automation в разделе «Комментарии» ниже. Не стесняйтесь делиться этим со своими сверстниками. 😊

Оригинал: “https://dev.to/himanshusheth004/how-to-handle-web-table-in-selenium-webdriver-2jp7”