humanemulator.net — справка.
Продукт, демо и покупка — на
хуманэмулятор.рф
|
Демо
|
Купить
|
API
|
лог изменений
get_cell_by_number
get_cell_by_number($number,$row,$col,$as_html=false,$frame=-1); - получить текст ячейки в таблице с заданным номеромС версии 4.6.41 достпуно: можно передавать вложенные фреймы, принцип такой же самый, передается строка с номерами фреймов, разделенных : например при передаче "1:0:5" - будет выбран фрейм с номером 1 в нем под фрейм с номером 0 и в нем подфрейм с номером 5
С версии 7.0.38 достпуно: можно передавать "url=>XXX", тогда будет произведен поиск фрейма, который содержит заданнй src, или передавать "name=>XXX" - тогда будет поиск фрейма, по заданной части имени.
После отработки функция возвращает результат своей работы в скрипт :
Пример использования
<?php // Scenario: Get cell text by row and column coordinates using XHETable class // Description: Demonstrates how to find a table by its number and retrieve text content from a specific cell using row and column coordinates // Classes used: DOM, XHETable, XHEBrowser, XHEApplication // Step: Connection to XHE API $xhe_host = "localhost:7010"; // Step: Include init.php file if (!isset($path)) { $path = "../../../Templates/init.php"; require($path); } // Step: Navigate to the polygon page WEB::$browser->navigate(TEST_POLYGON_URL . "table.html"); echo "=== Example of using get_cell_by_number ===\n\n"; // Example 1: Get cell text from first row, first column echo "Example 1: Get cell text from first row, first column\n\n"; // Step: Define arguments for get_cell_by_number $tableNumber1 = 0; $row1 = 0; $col1 = 0; $asHtml1 = false; // Default is false $cell_text = DOM::$table->get_cell_by_number($tableNumber1, $row1, $col1, $asHtml1); echo "Cell text (table $tableNumber1, row $row1, column $col1): '" . $cell_text . "'\n\n"; // Example 2: Get cell text from second row, third column echo "Example 2: Get cell text from second row, third column\n\n"; // Step: Define arguments for get_cell_by_number $tableNumber2 = 0; $row2 = 1; $col2 = 2; $asHtml2 = false; // Default is false $cell_text_2nd_3rd = DOM::$table->get_cell_by_number($tableNumber2, $row2, $col2, $asHtml2); echo "Cell text (table $tableNumber2, row $row2, column $col2): '" . $cell_text_2nd_3rd . "'\n\n"; // Example 3: Get cell as HTML instead of text echo "Example 3: Get cell as HTML instead of text\n\n"; // Step: Define arguments for get_cell_by_number $tableNumber3 = 0; $row3 = 0; $col3 = 0; $asHtml3 = true; // As HTML $cell_html = DOM::$table->get_cell_by_number($tableNumber3, $row3, $col3, $asHtml3); echo "HTML cell (table $tableNumber3, row $row3, column $col3):\n" . $cell_html . "\n\n"; // Example 4: Get cell from table in frame echo "Example 4: Get cell from table in frame\n\n"; // Step: Define arguments for get_cell_by_number $tableNumber4 = 0; $row4 = 1; $col4 = 2; $asHtml4 = false; // Default is false $frame4 = "0"; // Frame 0 $cell_frame = DOM::$table->get_cell_by_number($tableNumber4, $row4, $col4, $asHtml4, $frame4); echo "Cell text (table $tableNumber4 in frame $frame4, row $row4, column $col4): '" . $cell_frame . "'\n\n"; // Example 5: Get cell from nested frames echo "Example 5: Get cell from nested frames\n\n"; // Step: Define arguments for get_cell_by_number $tableNumber5 = 0; $row5 = 0; $col5 = 0; $asHtml5 = false; // Default is false $frame5 = "1:2:3"; // Nested frames $cell_nested = DOM::$table->get_cell_by_number($tableNumber5, $row5, $col5, $asHtml5, $frame5); echo "Cell text (table $tableNumber5 in nested frames $frame5, row $row5, column $col5): '" . $cell_nested . "'\n\n"; // Example 6: Read data from table for analysis echo "Example 6: Read data from table for analysis\n\n"; // Step: Define table number and get its structure $table_number_ex6 = 0; $row_count_ex6 = DOM::$table->get_rows_by_number($table_number_ex6); $col_count_ex6 = DOM::$table->get_cols_by_number($table_number_ex6); echo "Reading data from table $table_number_ex6:\n"; $table_data = []; for ($row = 0; $row < min($row_count_ex6, 5); $row++) { // Read first 5 rows $row_data = []; for ($col = 0; $col < min($col_count_ex6, 5); $col++) { // Read first 5 columns // Step: Define arguments for get_cell_by_number inside the loop $cell_value = DOM::$table->get_cell_by_number($table_number_ex6, $row, $col); $row_data[] = $cell_value; } $table_data[] = $row_data; } // Output data as table echo "\nTable data:\n"; foreach ($table_data as $row_index => $row) { echo "Row $row_index: " . implode(" | ", $row) . "\n"; } echo "\n"; // Example 7: Search for specific values in table echo "Example 7: Search for specific values in table\n\n"; // Step: Define table number and get its structure $table_number_ex7 = 0; $row_count_ex7 = DOM::$table->get_rows_by_number($table_number_ex7); $col_count_ex7 = DOM::$table->get_cols_by_number($table_number_ex7); $target_values = ['Total', 'Sum']; $found_cells = []; for ($row = 0; $row < $row_count_ex7; $row++) { for ($col = 0; $col < $col_count_ex7; $col++) { // Step: Define arguments for get_cell_by_number inside the loop $cell_value = DOM::$table->get_cell_by_number($table_number_ex7, $row, $col); foreach ($target_values as $target) { if (stripos($cell_value, $target) !== false) { $found_cells[] = [ 'row' => $row, 'col' => $col, 'value' => $cell_value ]; break; } } } } echo "Found cells with keywords:\n"; foreach ($found_cells as $cell) { echo "- Row {$cell['row']}, column {$cell['col']}: '{$cell['value']}'\n"; } echo "\n"; // Example 8: Check cell existence before reading echo "Example 8: Check cell existence before reading\n\n"; // Step: Define table number and get its structure $table_number_ex8 = 0; $row_count_ex8 = DOM::$table->get_rows_by_number($table_number_ex8); $col_count_ex8 = DOM::$table->get_cols_by_number($table_number_ex8); // Check if table exists $table_element = DOM::$table->get_by_number($table_number_ex8); if ($table_element->is_exist()) { echo "Table $table_number_ex8 exists\n"; // Check if cell exists $test_row = min($row_count_ex8 - 1, 10); $test_col = min($col_count_ex8 - 1, 10); // Step: Define arguments for get_cell_by_number $cell_value = DOM::$table->get_cell_by_number($table_number_ex8, $test_row, $test_col); if ($cell_value !== '') { echo "Cell ($test_row, $test_col) exists and contains: '$cell_value'\n"; } else { echo "Cell ($test_row, $test_col) contains no data\n"; } } else { echo "Table $table_number_ex8 not found on page\n"; } echo "\n"; echo "All get_cell_by_number examples completed!\n"; // Step: Stop work WINDOW::$app->quit(); ?>
# Additional paths import sys sys.path.insert(0, '../../../Templates PY/') xhe_host = "127.0.0.1:7010" from xweb_human_emulator import * # начало echo("<hr><font color=blue>table.xxxxxxxxx</font><hr>") # 1 echo("1. Перейдем на полигон : ") echo(browser.navigate("https://rpa-bot.ru/wiki/poligon/table.html"),"<br>") # 2 echo("2. Получим содержимое ячейки (6:2) у элемента с 0 номером как html : ") echo(table.get_cell_by_number(0,6,2,true),"<br>") # 3 echo("3. Получим содержимое ячейки (6:2) у элемента с 0 номером как текст : ") echo(table.get_cell_by_number(0,6,2,false),"<br>") # 4 echo("4. Получим содержимое ячейки у несуществующего элемента : ") if not table.get_cell_by_number(100500,6,2,false): echo("нет такого элемента<br>") # 5 echo("5. Получим содержимое несуществующей ячейки у элемента : ") if not table.get_cell_by_number(0,100500,100500,false): echo("нет такой ячейки<br>") # 6 echo("6. Получим содержимое ячейки (6:2) у элемента с 0 номером как текст в нулевом фрейме : ") echo(table.get_cell_by_number(0,6,2,true,0),"<br>") # 7 echo("7. Получим содержимое ячейки у несуществующего элемента в нулевом номере : ") if not table.get_cell_by_number(100500,6,2,true,0): echo("нет такого элемента<br>") # 8 echo("8. Получим содержимое ячейки у элемента в несуществующем фрейме : ") if not table.get_cell_by_number(0,6,2,false,5): echo("нет такого фрейма<br>") # конец echo("<hr><br>") # Quit app.quit()
#region using using System; using System.Diagnostics; using System.Collections.Generic; using System.Linq; using System.IO; using System.Text; using System.Threading; using XHE; using XHE.XHE_DOM; using XHE.XHE_System; using XHE.XHE_Window; using XHE.XHE_Web; #endregion class Program:XHEScript { static void Main(string[] args) { // init XHE server = "localhost:7010"; InitXHE(); // начало echo("<hr><font color=blue>table.get_cell_by_number</font><hr>"); // 1 шаг echo("1. Перейдем на полигон : "); echo(browser.navigate("rpa-bot.ru/wiki/poligon/table.html")+"<br>"); // 2 шаг echo("2. Получим содержимое ячейки (6:2) у элемента с 0 номером как хтмл : "); echo(table.get_cell_by_number(0,6,2,true)+"<br>"); // 3 шаг echo("3. Получим содержимое ячейки (6:2) у элемента с 0 номером как текст : "); echo(table.get_cell_by_number(0,6,2,false)+"<br>"); // 4 шаг echo("4. Получим содержимое ячейки у несуществующего элемента : "); if (table.get_cell_by_number(100500,6,2,false)=="false") echo("нет такого элемента<br>"); // 5 шаг echo("5. Получим содержимое несуществующей ячейки у элемента : "); if (table.get_cell_by_number(0,100500,100500,false)=="false") echo("нет такой ячейки<br>"); // 6 шаг echo("6. Получим содержимое ячейки (6:2) у элемента с 0 номером как текст в нулевом фрейме : "); echo(table.get_cell_by_number(0,6,2,true,"0")+"<br>"); // 7 шаг echo("7. Получим содержимое ячейки у несуществующего элемента в нулевом номере : "); if (table.get_cell_by_number(100500,6,2,true,"0")=="false") echo("нет такого элемента<br>"); // 8 шаг echo("8. Получим содержимое ячейки у элемента в несуществующем фрейме : "); if (table.get_cell_by_number(0,6,2,false,"5")=="false") echo("нет такого фрейма<br>"); // конец echo("\n\n"); app.quit(); } }
// подключим функциональные объекты, если еще не подключен xhe_host="127.0.0.1:7010"; echo=require("../../../Templates JS/init.js"); // начало echo("<hr><font color=blue>table.get_cell_by_number</font><hr>"); // 1 шаг echo("1. Перейдем на полигон : "); echo(browser.navigate("https://rpa-bot.ru/wiki/poligon/table.html")+"<br>"); // 2 шаг echo("2. Получим содержимое ячейки (6:2) у элемента с 0 номером как html : "); echo(table.get_cell_by_number(0,6,2,true)+"<br>"); // 3 шаг echo("3. Получим содержимое ячейки (6:2) у элемента с 0 номером как текст : "); echo(table.get_cell_by_number(0,6,2,false)+"<br>"); // 4 шаг echo("4. Получим содержимое ячейки у несуществующего элемента : "); if (!table.get_cell_by_number(100500,6,2,false)) echo("нет такого элемента<br>"); // 5 шаг echo("5. Получим содержимое несуществующей ячейки у элемента : "); if (!table.get_cell_by_number(0,100500,100500,false)) echo("нет такой ячейки<br>"); // 6 шаг echo("6. Получим содержимое ячейки (6:2) у элемента с 0 номером как текст в нулевом фрейме : "); echo(table.get_cell_by_number(0,6,2,true,0)+"<br>"); // 7 шаг echo("7. Получим содержимое ячейки у несуществующего элемента в нулевом номере : "); if (!table.get_cell_by_number(100500,6,2,true,0)) echo("нет такого элемента<br>"); // 8 шаг echo("8. Получим содержимое ячейки у элемента в несуществующем фрейме : "); if (!table.get_cell_by_number(0,6,2,false,5)) echo("нет такого фрейма<br>"); // конец echo("\n"); // Quit app.quit();
=============================================
Table Объекты DOM System Vision Web Window
=============================================
Если что-то непонятно или необходимо узнать или считаете что надо добавить по работе этой функции, пишите в комментарии или на наш форум.