Работа с веб-таблицами, возможно, намного сложнее, чем с любыми другими элементами или элементами управления.
Веб-таблица - это набор строк и столбцов. Для веб-таблицы данные хранятся в ячейках. Таблицы используются не только в таблицах данных, но и при организации веб-страниц.
Веб-таблицы
Веб-таблица обычно содержит следующие теги:
- 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.