humanemulator.net — справка.
Продукт, демо и покупка — на
хуманэмулятор.рф
|
Демо
|
Купить
|
API
|
лог изменений
get_cell_x_by_attribute
get_cell_x_by_attribute($attr_name,$attr_value,$exactly,$row,$col,$frame=-1); - получить x-координату левого верхнего угла ячейки у таблицы с заданным внутренним текстомС версии 4.6.41 достпуно: можно передавать вложенные фреймы, принцип такой же самый, передается строка с номерами фреймов, разделенных : например при передаче "1:0:5" - будет выбран фрейм с номером 1 в нем под фрейм с номером 0 и в нем подфрейм с номером 5
С версии 7.0.38 достпуно: можно передавать "url=>XXX", тогда будет произведен поиск фрейма, который содержит заданнй src, или передавать "name=>XXX" - тогда будет поиск фрейма, по заданной части имени.
После отработки функция возвращает результат своей работы в скрипт :
Пример использования
<?php // Scenario: Get cell X coordinate by table attribute using XHETable class // Description: Demonstrates how to find a table by its attribute and retrieve the X coordinate of a specific cell // Classes used: DOM, XHETable, XHEBrowser, XHEApplication // Step: Connection to XHE API $xhe_host = "localhost:7010"; // Step: Path to init.php file if (!isset($path)) { // Path to init.php file for connecting to XHE API $path = "../../../Templates/init.php"; // Step: When connecting init.php file, all functionality of classes for working with XHE API will be available require($path); } // Step: Go to the polygon page if the page was not loaded earlier WEB::$browser->navigate(TEST_POLYGON_URL . "table.html"); echo "=== Example of using get_cell_x_by_attribute ===\n\n"; // Example 1: Get cell X coordinate by table ID echo "Example 1: Get cell X coordinate by table ID\n\n"; // Step: Define arguments for get_cell_x_by_attribute $attrName1 = 'id'; $attrValue1 = 'my-table'; $exactMatch1 = true; $rowNum1 = 1; $colNum1 = 2; $frame1 = "-1"; $cell_x_by_id = DOM::$table->get_cell_x_by_attribute( $attrName1, $attrValue1, $exactMatch1, $rowNum1, $colNum1, $frame1 ); echo "X coordinate of cell ($rowNum1, $colNum1) by table ID '$attrValue1': $cell_x_by_id\n\n"; // Example 2: Get cell X coordinate by table class echo "Example 2: Get cell X coordinate by table class\n\n"; // Step: Define arguments for get_cell_x_by_attribute $attrName2 = 'class'; $attrValue2 = 'data-table'; $exactMatch2 = true; $rowNum2 = 0; $colNum2 = 0; $frame2 = "-1"; $cell_x_by_class = DOM::$table->get_cell_x_by_attribute( $attrName2, $attrValue2, $exactMatch2, $rowNum2, $colNum2, $frame2 ); echo "X coordinate of cell ($rowNum2, $colNum2) by table class '$attrValue2': $cell_x_by_class\n\n"; // Example 3: Get cell X coordinate by partial attribute match echo "Example 3: Get cell X coordinate by partial attribute match\n\n"; // Step: Define arguments for get_cell_x_by_attribute $attrName3 = 'class'; $attrValue3 = 'table'; $exactMatch3 = false; // Inexact match $rowNum3 = 1; $colNum3 = 1; $frame3 = "-1"; $cell_x_partial = DOM::$table->get_cell_x_by_attribute( $attrName3, $attrValue3, $exactMatch3, $rowNum3, $colNum3, $frame3 ); echo "X coordinate of cell ($rowNum3, $colNum3) by partial class '$attrValue3': $cell_x_partial\n\n"; // Example 4: Get cell X coordinate from table in frame echo "Example 4: Get cell X coordinate from table in frame\n\n"; // Step: Define arguments for get_cell_x_by_attribute $attrName4 = 'id'; $attrValue4 = 'frame-table'; $exactMatch4 = true; $rowNum4 = 0; $colNum4 = 0; $frame4 = '0'; // Frame 0 $cell_x_frame = DOM::$table->get_cell_x_by_attribute( $attrName4, $attrValue4, $exactMatch4, $rowNum4, $colNum4, $frame4 ); echo "X coordinate of cell ($rowNum4, $colNum4) from table in frame $frame4 with ID '$attrValue4': $cell_x_frame\n\n"; // Example 5: Get cell X coordinate from table in nested frames echo "Example 5: Get cell X coordinate from table in nested frames\n\n"; // Step: Define arguments for get_cell_x_by_attribute $attrName5 = 'class'; $attrValue5 = 'nested-data'; $exactMatch5 = true; $rowNum5 = 1; $colNum5 = 2; $frame5 = '1:2:3'; // Nested frames $cell_x_nested = DOM::$table->get_cell_x_by_attribute( $attrName5, $attrValue5, $exactMatch5, $rowNum5, $colNum5, $frame5 ); echo "X coordinate of cell ($rowNum5, $colNum5) from table in nested frames $frame5 with class '$attrValue5': $cell_x_nested\n\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. Получим x ячейки (6:2) у элемента с id=tbl1 : ") echo(table.get_cell_x_by_attribute("id","tbl1",true,6,2),"<br>") # 3 echo("3. Получим x ячейки у несуществующего элемента : ") if table.get_cell_x_by_attribute("name","ptych",false,6,2)==-1: echo("нет такого элемента<br>") # 4 echo("4. Получим x ячейки (6:2) у элемента с id=tbl1 в нулевом фрейме : ") echo(table.get_cell_x_by_attribute("id","tbl1",true,6,2,0),"<br>") # 5 echo("5. Получим x ячейки у несуществующего элемента в нулевом номере : ") if table.get_cell_x_by_attribute("name","ptych",false,6,2,0)==-1: echo("нет такого элемента<br>") # 6 echo("6. Получим x ячейки у элемента в несуществующем фрейме : ") if table.get_cell_x_by_attribute("id","tbl1",true,6,2,5)==-1: 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_x_by_attribute</font><hr>"); // 1 шаг echo("1. Перейдем на полигон : "); echo(browser.navigate("rpa-bot.ru/wiki/poligon/table.html")+"<br>"); // 2 шаг echo("2. Получим x ячейки (6:2) у элемента с id=tbl1 : "); echo(table.get_cell_x_by_attribute("id","tbl1",true,6,2)+"<br>"); // 3 шаг echo("3. Получим x ячейки у несуществующего элемента : "); if (table.get_cell_x_by_attribute("name","ptych",false,6,2)==-1) echo("нет такого элемента<br>"); // 4 шаг echo("4. Получим x ячейки (6:2) у элемента с id=tbl1 в нулевом фрейме : "); echo(table.get_cell_x_by_attribute("id","tbl1",true,6,2,"0")+"<br>"); // 5 шаг echo("5. Получим x ячейки у несуществующего элемента в нулевом номере : "); if (table.get_cell_x_by_attribute("name","ptych",false,6,2,"0")==-1) echo("нет такого элемента<br>"); // 6 шаг echo("6. Получим x ячейки у элемента в несуществующем фрейме : "); if (table.get_cell_x_by_attribute("id","tbl1",true,6,2,"5")==-1) 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_x_by_attribute</font><hr>"); // 1 шаг echo("1. Перейдем на полигон : "); echo(browser.navigate("https://rpa-bot.ru/wiki/poligon/table.html")+"<br>"); // 2 шаг echo("2. Получим x ячейки (6:2) у элемента с id=tbl1 : "); echo(table.get_cell_x_by_attribute("id","tbl1",true,6,2)+"<br>"); // 3 шаг echo("3. Получим x ячейки у несуществующего элемента : "); if (table.get_cell_x_by_attribute("name","ptych",false,6,2)==-1) echo("нет такого элемента<br>"); // 4 шаг echo("4. Получим x ячейки (6:2) у элемента с id=tbl1 в нулевом фрейме : "); echo(table.get_cell_x_by_attribute("id","tbl1",true,6,2,0)+"<br>"); // 5 шаг echo("5. Получим x ячейки у несуществующего элемента в нулевом номере : "); if (table.get_cell_x_by_attribute("name","ptych",false,6,2,0)==-1) echo("нет такого элемента<br>"); // 6 шаг echo("6. Получим x ячейки у элемента в несуществующем фрейме : "); if (table.get_cell_x_by_attribute("id","tbl1",true,6,2,5)==-1) echo("нет такого фрейма<br>"); // конец echo("\n"); // Quit app.quit();
=============================================
Table Объекты DOM System Vision Web Window
=============================================
Если что-то непонятно или необходимо узнать или считаете что надо добавить по работе этой функции, пишите в комментарии или на наш форум.