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

Веб-таблицы

Веб-таблица обычно содержит следующие теги:

  • table - указывает на таблицу.
  • tbody - определяет контейнер для строк и столбцов.
  • tr - указывает строку в таблице.
  • td / th - данные таблицы / заголовок таблицы с указанием столбцов в соответствующих строках таблицы.

Обычная веб-таблица

HTML-код базовой веб-таблицы выглядит следующим образом:

Есть несколько способов обработки веб-таблицы.

Пример 1:

Вы хотите получить текст из веб-таблицы и проверить его.

Сценарий. Предположим, нам нужно выяснить, к какой стране принадлежит компания Pay Talk, указанная в приведенной выше таблице.

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

Режим сценария:

import org.openqa.selenium.By as By

import org.openqa.selenium.WebDriver as WebDriver

import org.openqa.selenium.WebElement as WebElement

import com.kms.katalon.core.webui.driver.DriverFactory as DriverFactory

import com.kms.katalon.core.webui.keyword.WebUiBuiltInKeywords as WebUI
WebUI.openBrowser('D:\\\\Katalon Tutorial\\\\Katalon Tutorial\\\\WebTable_Handling_Scenario1.html')

WebUI.maximizeWindow()

WebDriver driver = DriverFactory.getWebDriver()
'Expected value from Table'
String ExpectedValue = "Pay Talk";
'To locate table'
WebElement Table = driver.findElement(By.xpath("//table/tbody"))
'To locate rows of table it will Capture all the rows available in the table'
List<WebElement> rows_table = Table.findElements(By.tagName('tr'))
'To calculate no of rows In table'
int rows_count = rows_table.size()

'Loop will execute for all the rows of the table'
Loop:
for (int row = 0; row < rows_count; row++) {
'To locate columns(cells) of that specific row'
List<WebElement> Columns_row = rows_table.get(row).findElements(By.tagName('td'))

'To calculate no of columns(cells) In that specific row'
int columns_count = Columns_row.size()

println((('Number of cells In Row ' + row) + ' are ') + columns_count)

'Loop will execute till the last cell of that specific row'
for (int column = 0; column < columns_count; column++) {
'It will retrieve text from each cell'
String celltext = Columns_row.get(column).getText()

println((((('Cell Value Of row number ' + row) + ' and column number ') + column) + ' Is ') + celltext)

'Checking if Cell text is matching with the expected value'
if (celltext == ExpectedValue) {
'Getting the Country Name if cell text i.e Company name matches with Expected value'
println('Text present in row number 3 is: ' + Columns_row.get(2).getText())

'After getting the Expected value from Table we will Terminate the loop'
break Loop;
}
}
}

Ручной режим:

Перейдите на вкладку ручного режима, чтобы просмотреть тестовый пример шаг за шагом.

Пример 2:

Вы хотите выполнить действия в веб-таблице ниже:

Сценарий:

Допустим, нам нужно отредактировать студенческую запись, в которой указан год выпуска 2018.

Режим сценария:

import org.openqa.selenium.By as By

import org.openqa.selenium.WebDriver as WebDriver

import org.openqa.selenium.WebElement as WebElement

import com.kms.katalon.core.webui.driver.DriverFactory as DriverFactory

import com.kms.katalon.core.webui.keyword.WebUiBuiltInKeywords as WebUI

WebUI.openBrowser('D:\\\\Katalon Tutorial\\\\Katalon Tutorial\\\\WebTable_Handling_Scenario2.html')

WebUI.maximizeWindow()

'Expected value from Table'

String ExpectedValue = '2018'

WebDriver driver = DriverFactory.getWebDriver()

'To locate table'

WebElement Table = driver.findElement(By.xpath('//table/tbody'))

'To locate rows of table it will Capture all the rows available in the table '

List<WebElement> Rows = Table.findElements(By.tagName('tr'))

println('No. of rows: ' + Rows.size())

'Find a matching text in a table and performing action'

'Loop will execute for all the rows of the table'

table: for (int i = 0; i < Rows.size(); i++) {

'To locate columns(cells) of that specific row'

List<WebElement> Cols = Rows.get(i).findElements(By.tagName('td'))

for (int j = 0; j < Cols.size(); j++) {

'Verifying the expected text in the each cell'

if (Cols.get(j).getText().equalsIgnoreCase(ExpectedValue)) {

'To locate anchor in the expected value matched row to perform action'

Cols.get(4).findElement(By.tagName('a')).click()

table: break

}

}

}

Ручной режим:

Перейдите на вкладку ручного режима, чтобы просмотреть тестовый пример шаг за шагом.

Приведенные выше примеры дают общее представление о том, как работать с веб-таблицами в Katalon Studio. Если вы новичок в автоматизации тестирования, рекомендуется воспользоваться ручным режимом в Katalon Studio. Для опытных тестировщиков режим сценария обеспечивает гибкость при создании тестов и управлении ими. Пожалуйста, скачайте исходный код здесь.

Для получения рекомендаций см. Обзор средств автоматизации тестирования T« op 10 от Medium.

Для получения дополнительных инструкций и помощи, пожалуйста, обратитесь к Руководствам по Katalon Studio и Katalon Forum.