orc demo in progress

prd
robo-bo 2 years ago
parent c79749096e
commit 4115f461f9

@ -1,57 +0,0 @@
# !ATTENTION - Current Control panel works only from pyOpenRPA v1.2.0!
from pyOpenRPA import Orchestrator
def CPRender(inGSettings):
lJSCheckVersion="""
lT = 9;
lY="123";
console.log(lT+1);
if (lT==9) {
alert(123)
}
"""
lResultDict={
"HeaderLeftText":"CP_TEST",
"HeaderRightText":"NAME",
"DataStorageKey":"", #Use key for set current dict in mGlobal.DataStorage["DataStorageKey"] on client side
"SubheaderText":"",
"BodyKeyValueList":[
{"Key": "HTMLLinkURL", "Value": Orchestrator.Web.Basic.HTMLLinkURL(inURLStr="test",inColorStr="orange")},
{"Key": "HTMLLinkJSOnClick", "Value": Orchestrator.Web.Basic.HTMLLinkJSOnClick(inJSOnClickStr=lJSCheckVersion, inTitleStr="!Click me!",inColorStr="green")},
],
"FooterText":"",
"FooterButtonX2List":[],
"FooterButtonX1List":[],
"GlobalStorage": "" # UNCOMMENT FOR DEBUG PURPOSE TO WATCH inGSettings on client side
}
return lResultDict
# Check in control panel, that process is runnning
# Test JSON generator when page init
def JSONGenerator():
lJSONDict=[1,2,2,4,2,2,2]
return lJSONDict
# Test JS when page init
def JSInitGenerator():
lJSCheckVersion="""
lT = 9;
lY="123";
//console.log(lT+1);
if (lT==9) {
//alert(123)
}
"""
return lJSCheckVersion
def test():
#Orchestrator.WebRequestGet()
Orchestrator.WebRequestResponseSend("Hello my friend!")
#Orchestrator settings
def SettingsUpdate(inGSettings):
# New way to add CP defs in orchestrator - no gSettings..
Orchestrator.WebCPUpdate(inGSettings=inGSettings, inCPKeyStr="TEST", inHTMLRenderDef=CPRender, inJSONGeneratorDef=JSONGenerator, inJSInitGeneratorDef=JSInitGenerator)
Orchestrator.WebURLConnectDef(inMethodStr="GET", inURLStr="/test", inMatchTypeStr="Equal", inDef=test, inUACBool=False)
return inGSettings

@ -1,55 +0,0 @@
# !ATTENTION - Current Control panel works only from pyOpenRPA v1.2.0!
from pyOpenRPA import Orchestrator
from pyOpenRPA.Orchestrator import Managers
def ControlPanelRenderDict(inGSettings):
# Example of the JS code in Python code
lJSCheckVersion = f"""
if (!('VersionStr' in mGlobal)) {{
window.location.reload(true);
}} else {{
if (mGlobal.VersionStr != "{inGSettings["VersionStr"]}") {{
window.location.reload(true);
}} else {{
$('div.orchestrator-version').html(mGlobal['VersionStr']);
}}
}}
"""
lResultDict={
"HeaderLeftText":"Version check",
"HeaderRightText":"Orchestrator",
"DataStorageKey":"", #Use key for set current dict in mGlobal.DataStorage["DataStorageKey"] on client side
"SubheaderText":f"<script>{lJSCheckVersion}</script>",
"BodyKeyValueList":[
{"Key": "Client", "Value": '<div class="orchestrator-version" style="display:inline;"></div>'},
{"Key": "Server", "Value": inGSettings["VersionStr"]},
],
"FooterText":"",
"FooterButtonX2List":[],
"FooterButtonX1List":[],
"GlobalStorage": "" # UNCOMMENT FOR DEBUG PURPOSE TO WATCH inGSettings on client side
}
return lResultDict
# Check in control panel, that process is runnning
#Orchestrator settings
def SettingsUpdate(inGSettings):
#Add RobotRDPActive in control panel
Orchestrator.WebCPUpdate(inCPKeyStr="VersionCheck", inHTMLRenderDef=ControlPanelRenderDict)
#lCP = Orchestrator.Managers.ControlPanel(inControlPanelNameStr="TestTTT",inRefreshHTMLJinja2TemplatePathStr="ControlPanel\\test.html", inJinja2TemplateRefreshBool = True)
#lCP.InitJSJinja2TemplatePathSet(inJinja2TemplatePathStr="ControlPanel\\test.js")
#lProcess = Orchestrator.Managers.ProcessInitSafe(inAgentHostNameStr="IVANMASLOV-DESKTOP",inAgentUserNameStr="ND",
# inProcessNameWOExeStr="notepad",inStartCMDStr="notepad",inStopSafeTimeoutSecFloat=3)
# Some test
Orchestrator.OrchestratorInitWait()
#lProcess.ScheduleStatusCheckEverySeconds(inIntervalSecondsInt=5)
#lProcess.Start(inIsManualBool=False)
#lProcess.StartCheck()
#Orchestrator.OrchestratorScheduleGet().every(2).seconds.do(Orchestrator.OrchestratorThreadStart,
# lProcess.StartCheck)
#Orchestrator.OrchestratorScheduleGet().every(5).seconds.do(Orchestrator.OrchestratorThreadStart,lProcess.StatusCheckStart)
#lProcess.Start()
#lGit = Orchestrator.Managers.Git(inAgentHostNameStr="IVANMASLOV-DESKTOP",inAgentUserNameStr="ND",inGitPathStr="C:\Abs\Archive\scopeSrcUL\pyStore")
#lGit.BranchRevLastGetInterval(inBranchLocalStr="prd", inBranchRemoteStr="origin/prd", inPreviousBranchRestoreBool=False,inIntervalSecFloat=10.0)
#lGit.ProcessConnect(inProcess=lProcess)
return inGSettings

@ -0,0 +1,28 @@
from pyOpenRPA import Orchestrator
from pyOpenRPA.Orchestrator.Managers import ControlPanel
from pyOpenRPA.Orchestrator.Managers import Process
from pyOpenRPA.Tools import CrossOS
import os
import sys
import socket
import datetime
import urllib.parse
import time
g_cp_name_str = "HELLO"
g_repo_name_str = os.path.abspath(__file__).split("\\")[-5]
g_repo_package_path_str = os.path.abspath("\\".join(os.path.abspath(__file__).split("\\")[:-1]))
# User settings
g_host_str = socket.gethostname().upper() # Identify PC
g_control_panel = ControlPanel(inControlPanelNameStr=g_cp_name_str,
inRefreshHTMLJinja2TemplatePathStr=os.path.join(g_repo_package_path_str, "html_jinja2.xhtml"),
inJinja2TemplateRefreshBool=True,inRobotNameStr=g_repo_name_str)
g_jinja_context_dict = {"settings": sys.modules[__name__],
"urllib_parse_quote_plus": urllib.parse.quote_plus, "g_host_str": g_host_str, "g_repo_name_str": g_repo_name_str}
g_control_panel.Jinja2DataUpdateDictSet(inJinja2DataUpdateDict=g_jinja_context_dict)
g_control_panel.InitJSJinja2TemplatePathSet(inJinja2TemplatePathStr=os.path.join(g_repo_package_path_str, "js.js"))

@ -0,0 +1,52 @@
<div class="card" style="width:100%">
<div class="content">
<div class="right floated mini ui ">
</div>
<center><h1>Добро пожаловать <span>{{UserInfoDict["UserNameUpperStr"]}}</span>!</h1></center>
<div class="ui divider"></div>
<div class="description">
<div>
<h5>Предлагаем ознакомиться с демонстрационным стэндом оркестратора pyOpenRPA.</h5>
pyOpenRPA это прогрессивная RPA платформа, которая позволяет сочетать в рамках одного проекта все перспективные технологии, такие как:
<ul>
<li>OCR / NLP / NER: Распознавание изображений и текста</li>
<li>CV: Компьютерное зрение</li>
<li>AI: Искусственный интеллект</li>
<li>ML: Машинное обучение</li>
<li>BIGDATA: Большие данные</li>
<li>VOICE & CHAT: Голосовые и чат-боты</li>
</ul>
Роботов pyOpenRPA невозможно отключить принудительно - управлять ими будете только вы!
<br><br>
Здесь представлены примеры роботов для таких специалистов как:
<ul>
<li>Экономистов</li>
<li>Финансистов</li>
<li>Продавцов</li>
<li>Закупщиков</li>
<li>Маркетологов</li>
<li>Кадровиков</li>
<li>Рекрутёров</li>
<li>Казначеев</li>
<li>Юристов</li>
<li>Бухгалтеров</li>
<li>Операционистов</li>
<li>Безопасников</li>
<li>ИТ специалистов</li>
</ul>
<h5>pyOpenRPA - роботы помогут!</h5>
</div>
</div>
</div>
</div>
<script type="text/javascript">
$(document).ready(function() {
});
</script>

@ -0,0 +1,4 @@
$(document).ready(function() {
$('#test8-progress').progress();
});

@ -27,7 +27,7 @@ i#second {
h4 {
width: 100%;
text-align: center;
border-bottom: 5px solid rgb(82, 105, 95);
border-bottom: 5px solid teal;
line-height: 0.1em;
margin: 10px 0 20px;
}

@ -1,24 +1,26 @@
import time
time.sleep(1)
splitter1 = 'Рабочий процесс'
splitter2 = 'Пример доступных данных'
splitter3 = 'Пример запуска роботов'
title = 'Кадровик'
title = 'КАДРОВИК'
introHeader = 'Применение:'
introText = 'Робот-кадровик помогает проводить отбор кандидатов'
workflowHeader1 = 'Размещение вакансии'
workflowHeader1 = 'Шаг 1: Размещение вакансии'
workflowDescription1 = 'Выполняет человек'
workflowHint1 = 'Размещение вакансии в telegram/HH.ru'
workflowHeader2 = 'Тестирование'
workflowHeader2 = 'Шаг 2: Тестирование'
workflowDescription2 = 'Выполняет робот'
workflowHint2 = 'Автоматическое тестирования кандидатов'
workflowHeader3 = 'Подведение итогов'
workflowHeader3 = 'Шаг 3: Подведение итогов'
workflowDescription3 = 'Выполняет робот'
workflowHint3 = 'Автоматическое подведение итогов тестирования'
workflowHeader4 = 'Личное собеседование'
workflowHeader4 = 'Шаг 4: Личное собеседование'
workflowDescription4 = 'Выполняет человек'
workflowHint4 = 'Собеседование с лучшими кандидатами'
workflowHeader5 = 'Оформление будущего сотрудника'
workflowHeader5 = 'Шаг 5: Оформление будущего сотрудника'
workflowDescription5 = 'Выполняет человек'
workflowHint5 = 'Подписание трудового договора'
@ -73,14 +75,14 @@ html = f'''<!doctype html>
</div>
</div>
<div class="item">
<i class="cog icon"></i>
<i class="reddit alien icon"></i>
<div class="content">
<div class="header" data-tooltip="{workflowHint2}">{workflowHeader2}</div>
<div class="description">{workflowDescription2}</div>
</div>
</div>
<div class="item">
<i class="cog icon"></i>
<i class="reddit alien icon"></i>
<div class="content">
<div class="header" data-tooltip="{workflowHint3}">{workflowHeader3}</div>
<div class="description">{workflowDescription3}</div>

@ -13,7 +13,7 @@
<div class="card" style="width:450px;" id="card1">
<div class="content">
<center><h1>Кадровик</h1></center><br>
<center><h1>КАДРОВИК</h1></center><br>
<div class="ui message">
<div class="header">Применение:</div>
<p>Робот-кадровик помогает проводить отбор кандидатов</p>
@ -25,35 +25,35 @@
<div class="item">
<i class="user icon"></i>
<div class="content">
<div class="header" data-tooltip="Размещение вакансии в telegram/HH.ru">Размещение вакансии</div>
<div class="header" data-tooltip="Размещение вакансии в telegram/HH.ru">Шаг 1: Размещение вакансии</div>
<div class="description">Выполняет человек</div>
</div>
</div>
<div class="item">
<i class="cog icon"></i>
<i class="reddit alien icon"></i>
<div class="content">
<div class="header" data-tooltip="Автоматическое тестирования кандидатов">Тестирование</div>
<div class="header" data-tooltip="Автоматическое тестирования кандидатов">Шаг 2: Тестирование</div>
<div class="description">Выполняет робот</div>
</div>
</div>
<div class="item">
<i class="cog icon"></i>
<i class="reddit alien icon"></i>
<div class="content">
<div class="header" data-tooltip="Автоматическое подведение итогов тестирования">Подведение итогов</div>
<div class="header" data-tooltip="Автоматическое подведение итогов тестирования">Шаг 3: Подведение итогов</div>
<div class="description">Выполняет робот</div>
</div>
</div>
<div class="item">
<i class="user icon"></i>
<div class="content">
<div class="header" data-tooltip="Собеседование с лучшими кандидатами">Личное собеседование</div>
<div class="header" data-tooltip="Собеседование с лучшими кандидатами">Шаг 4: Личное собеседование</div>
<div class="description">Выполняет человек</div>
</div>
</div>
<div class="item">
<i class="user icon"></i>
<div class="content">
<div class="header" data-tooltip="Подписание трудового договора">Оформление будущего сотрудника</div>
<div class="header" data-tooltip="Подписание трудового договора">Шаг 5: Оформление будущего сотрудника</div>
<div class="description">Выполняет человек</div>
</div>
</div>

@ -0,0 +1,31 @@
from pyOpenRPA import Orchestrator
from pyOpenRPA.Orchestrator.Managers import ControlPanel
from pyOpenRPA.Orchestrator.Managers import Process
from pyOpenRPA.Tools import CrossOS
import os
import sys
import socket
import datetime
import urllib.parse
import time
g_cp_name_str = "CP_JUPYTER"
g_repo_name_str = os.path.abspath(__file__).split("\\")[-5]
g_repo_package_path_str = os.path.abspath("\\".join(os.path.abspath(__file__).split("\\")[:-1]))
#g_repo_package_path_str = os.path.join(g_repo_path_str, "Orchestrator","Demo","JUPITER_01")
#g_repo_package_path_str = os.path.join(g_repo_package_path_str, g_cp_name_str)
# User settings
g_host_str = socket.gethostname().upper() # Identify PC
time.sleep(2)
g_control_panel = ControlPanel(inControlPanelNameStr=g_cp_name_str,
inRefreshHTMLJinja2TemplatePathStr=os.path.join(g_repo_package_path_str, "html_jinja2.xhtml"),
inJinja2TemplateRefreshBool=True,inRobotNameStr=g_repo_name_str)
g_jinja_context_dict = {"settings": sys.modules[__name__],
"urllib_parse_quote_plus": urllib.parse.quote_plus, "g_host_str": g_host_str, "g_repo_name_str": g_repo_name_str}
g_control_panel.Jinja2DataUpdateDictSet(inJinja2DataUpdateDict=g_jinja_context_dict)
g_control_panel.InitJSJinja2TemplatePathSet(inJinja2TemplatePathStr=os.path.join(g_repo_package_path_str, "js.js"))

@ -0,0 +1,33 @@
<div class="card" style=""">
<div class="content">
<div class="right floated mini ui ">
{{settings.g_cp_name_str}}
</div>
<div class="header">
ИТ - JUPYTER
</div>
<div class="ui divider"></div>
<div class="meta">
<div>Рабочая область PYTHON JUPYTER. <br> Сотрудник: {{UserInfoDict["UserNameUpperStr"]}}</div>
<div class="ui divider"></div>
<div class="description">
<button class="massive ui button" >
Открыть в новой вкладке
</button>
</div>
</div>
<div class="extra content">
</div>
</div>
</div>
<script type="text/javascript">
$(document).ready(function() {
});
</script>

@ -0,0 +1,4 @@
$(document).ready(function() {
$('#test8-progress').progress();
});

@ -0,0 +1,23 @@
from pyOpenRPA import Orchestrator
from pyOpenRPA.Orchestrator.Managers import ControlPanel
import time
import os
import sys
import socket
import datetime
import urllib.parse
time.sleep(1.5)
g_cp_name_str = "OPER_00"
g_repo_name_str = os.path.abspath(__file__).split("\\")[-5]
g_repo_package_cp_path_str = os.path.abspath("\\".join(os.path.abspath(__file__).split("\\")[:-1]))
# User settings
g_host_str = socket.gethostname().upper() # Identify PC
g_control_panel = ControlPanel(inControlPanelNameStr=g_cp_name_str,
inRefreshHTMLJinja2TemplatePathStr=os.path.join(g_repo_package_cp_path_str, "html_jinja2.xhtml"),
inJinja2TemplateRefreshBool=True,inRobotNameStr=g_repo_name_str)
g_jinja_context_dict = {"settings": sys.modules[__name__],
"urllib_parse_quote_plus": urllib.parse.quote_plus, "g_host_str": g_host_str, "g_repo_name_str": g_repo_name_str}
g_control_panel.Jinja2DataUpdateDictSet(inJinja2DataUpdateDict=g_jinja_context_dict)

@ -0,0 +1,85 @@
<div class="card" style="width: 450px;"">
<div class="content">
<div class="right floated mini ui ">
OPER_00
</div>
<div class="header">
ОПЕРАЦИОНИСТ
</div>
<div class="meta">
<div>Робот бухгалтер.</div>
Сотрудник: {{UserInfoDict["UserNameUpperStr"]}}
</div>
<div class="ui divider"></div>
<div class="description">
<span style="font-weight: bold;">Статус за 05.04.2022:</span>
<div class="ui vertical fluid steps">
<div class="completed step">
<i class="arrow circle right card icon"></i>
<div class="content">
<div class="title">Шаг 1: Выгрузка</div>
<div class="description">Ежедневно в 08:22 (STARTED)</div>
</div>
</div>
<div class="active step">
<i class="arrow circle right card icon"></i>
<div class="content">
<div class="title">Шаг 2: Опрос</div>
<div class="description">Производить до 12:00</div>
</div>
</div>
<div class="step">
<i class="hourglass half card icon"></i>
<div class="content">
<div class="title">Шаг 3: Отчет</div>
<div class="description">Отправка вручную в период с 12:00 до 12:30</div>
</div>
</div>
</div>
<div class="ui divider"></div>
<div class="ui placeholder">
<div class="image header">
<div class="line"></div>
<div class="line"></div>
</div>
<div class="paragraph">
<div class="line"></div>
<div class="line"></div>
<div class="line"></div>
<div class="line"></div>
<div class="line"></div>
</div>
</div>
</div>
</div>
</div>
<script type="text/javascript">
$('.ui.accordion.per').accordion();
per_log_download = function () {
var l_now = new Date();
l_month_str = String(l_now.getMonth()+1)
if (l_month_str.length == 1){ l_month_str = "0"+l_month_str }
l_day_str = String(l_now.getDate())
if (l_day_str.length == 1){ l_day_str = "0"+l_day_str }
l_log_date_str = String(l_now.getFullYear())+"_"+l_month_str+"_"+l_day_str
l_log_date_str = window.prompt("Укажите дату лог файла для скачивания (формат: гггг_мм_дд)", l_log_date_str);
if (l_log_date_str != null) {
l_url_str = "/logs/"+l_log_date_str+".log"
window.open(l_url_str, '_blank');
}
}
</script>

@ -1,18 +1,22 @@
import time
time.sleep(1)
splitter1 = 'Рабочий процесс'
splitter2 = 'Окно настройки робота'
title = 'Казначей'
title = 'КАЗНАЧЕЙ'
introHeader = 'Применение:'
introText = 'Робот-казначей выполняет выгрузку банковских выписок'
workflowHeader1 = 'Авторизация в клиент-банке'
workflowHeader1 = 'Шаг 1: Авторизация в клиент-банке'
workflowDescription1 = 'Выполняет робот'
workflowHint1 = 'Авторизация на сайте банка'
workflowHeader2 = 'Выгрузка выписок'
workflowHeader2 = 'Шаг 2: Выгрузка выписок'
workflowDescription2 = 'Выполняет робот'
workflowHint2 = 'Скачивание выписок с сайта банка'
workflowHeader3 = 'Перенаправление выписок'
workflowHeader3 = 'Шаг 3: Перенаправление выписок'
workflowDescription3 = 'Выполняет робот'
workflowHint3 = 'Например, размещение в сетевой папке'
@ -25,7 +29,7 @@ dropBankAccountTitle = 'Выберите счет'
dropBankAccount1 = 'Счет 1'
dropBankAccount2 = 'Счет 2'
dropBankAccount3 = 'Счет 3'
dropBankAccountAll = 'Все'
dropBankAccountAll = 'Счет XY'
checkboxPerTitle = 'Период:'
checkboxPer1 = 'За день'
@ -68,21 +72,21 @@ html = f'''<!doctype html>
<div class="ui relaxed divided list">
<div class="item">
<i class="cog icon"></i>
<i class="reddit alien icon"></i>
<div class="content">
<div class="header" data-tooltip="{workflowHint1}">{workflowHeader1}</div>
<div class="description">{workflowDescription1}</div>
</div>
</div>
<div class="item">
<i class="cog icon"></i>
<i class="reddit alien icon"></i>
<div class="content">
<div class="header" data-tooltip="{workflowHint2}">{workflowHeader2}</div>
<div class="description">{workflowDescription2}</div>
</div>
</div>
<div class="item">
<i class="cog icon"></i>
<i class="reddit alien icon"></i>
<div class="content">
<div class="header" data-tooltip="{workflowHint3}">{workflowHeader3}</div>
<div class="description">{workflowDescription3}</div>
@ -103,7 +107,7 @@ html = f'''<!doctype html>
</div>
</div><br><br>
<select class="ui fluid search dropdown" multiple="">
<select class="ui fluid search dropdown" style="font-family: 'Lato', 'Helvetica Neue', Arial, Helvetica, sans-serif" multiple="">
<option value="">{dropBankAccountTitle}</option>
<option value="All">{dropBankAccountAll}</option>
<option value="Ch1">{dropBankAccount1}</option>

@ -12,7 +12,7 @@
<div class="card" style="width:450px;" id="card1">
<div class="content">
<center><h1>Казначей</h1></center><br>
<center><h1>КАЗНАЧЕЙ</h1></center><br>
<div class="ui message">
<div class="header">Применение:</div>
<p>Робот-казначей выполняет выгрузку банковских выписок</p>
@ -22,23 +22,23 @@
<div class="ui relaxed divided list">
<div class="item">
<i class="cog icon"></i>
<i class="reddit alien icon"></i>
<div class="content">
<div class="header" data-tooltip="Авторизация на сайте банка">Авторизация в клиент-банке</div>
<div class="header" data-tooltip="Авторизация на сайте банка">Шаг 1: Авторизация в клиент-банке</div>
<div class="description">Выполняет робот</div>
</div>
</div>
<div class="item">
<i class="cog icon"></i>
<i class="reddit alien icon"></i>
<div class="content">
<div class="header" data-tooltip="Скачивание выписок с сайта банка">Выгрузка выписок</div>
<div class="header" data-tooltip="Скачивание выписок с сайта банка">Шаг 2: Выгрузка выписок</div>
<div class="description">Выполняет робот</div>
</div>
</div>
<div class="item">
<i class="cog icon"></i>
<i class="reddit alien icon"></i>
<div class="content">
<div class="header" data-tooltip="Например, размещение в сетевой папке">Перенаправление выписок</div>
<div class="header" data-tooltip="Например, размещение в сетевой папке">Шаг 3: Перенаправление выписок</div>
<div class="description">Выполняет робот</div>
</div>
</div>
@ -57,9 +57,9 @@
</div>
</div><br><br>
<select class="ui fluid search dropdown" multiple="">
<select class="ui fluid search dropdown" style="font-family: 'Lato', 'Helvetica Neue', Arial, Helvetica, sans-serif" multiple="">
<option value="">Выберите счет</option>
<option value="All">Все</option>
<option value="All">Счет XY</option>
<option value="Ch1">Счет 1</option>
<option value="Ch2">Счет 2</option>
<option value="Ch3">Счет 3</option>

@ -691,7 +691,7 @@ def OrchestratorPySearchInit(inGlobPatternStr, inDefStr = None, inDefArgNameGSet
sys.modules[lModuleNameStr] = lTechModuleFromSpec # Add initialized module in sys - python will not init this module enought
lTechSpecificationModuleLoader = lTechSpecification.loader.exec_module(lTechModuleFromSpec)
lItemDict = {"ModuleNameStr": lModuleNameStr, "PyPathStr": lPyPathItemStr, "Module": lTechModuleFromSpec}
if lL: lL.info(f"Модуль .py {lModuleNameStr} был успешно инициализирован")
if lL: lL.info(f"Модуль .py {lModuleNameStr} был успешно инициализирован. Путь к файлу: {lPyPathItemStr}")
inResultDict[lModuleNameStr]=lItemDict
# Backward compatibility to call def with gsettings when init
if inDefStr is not None and inDefStr != "":
@ -701,7 +701,7 @@ def OrchestratorPySearchInit(inGlobPatternStr, inDefStr = None, inDefArgNameGSet
lArgDict = {inDefArgNameGSettingsStr:GSettingsGet()}
lDef(**lArgDict)
except Exception as e:
if lL: lL.exception(f"Exception when init the .py file {os.path.abspath(lPyPathItemStr)}")
if lL: lL.exception(f"Ошибка при инициализации .py файла: {os.path.abspath(lPyPathItemStr)}")
# # # # # # # #
lResultDict = {}

@ -69,13 +69,12 @@
}
.ui.search.dropdown>input.search {
width:100%;
font-family:monospace;
font-family:'Lato', 'Helvetica Neue', Arial, Helvetica, sans-serif;
font-weight: bold;
}
.ui.search.dropdown>.text {
width:100%;
font-family:monospace;
font-weight: bold;
font-family:'Lato', 'Helvetica Neue', Arial, Helvetica, sans-serif;
}
</style>
</head>

@ -177,7 +177,7 @@ def UIOSelectorList(inUIOSelectorStr, inUIO=None) -> list:
UIWeb.BrowserChromeStart()
UIWeb.PageOpen("https://mail.ru")
lUIOSelectorStr = "//*[@id=\"grid\"]/div[2]/div[2]/div[3]/div[1]/ul/li[5]/div/a"
lUIOList = UIOSelectorList(inUIOSelectorStr = lUIOSelectorStr)
lUIOList = UIWeb.UIOSelectorList(inUIOSelectorStr = lUIOSelectorStr)
UIWeb.BrowserClose()
:param inUIOSelectorStr: XPATH или CSS селектор UI объекта на web странице. Подсказки по CSS: https://devhints.io/css Подсказки по XPath: https://devhints.io/xpath
@ -212,7 +212,7 @@ def UIOSelectorFirst(inUIOSelectorStr, inUIO=None) -> list:
UIWeb.BrowserChromeStart()
UIWeb.PageOpen("https://mail.ru")
lUIOSelectorStr = "//*[@id=\"grid\"]/div[2]/div[2]/div[3]/div[1]/ul/li[5]/div/a"
lUIO = UIOSelectorFirst(inUIOSelectorStr = lUIOSelectorStr)
lUIO = UIWeb.UIOSelectorFirst(inUIOSelectorStr = lUIOSelectorStr)
UIWeb.BrowserClose()
:param inUIOSelectorStr: XPATH или CSS селектор UI объекта на web странице. Подсказки по CSS: https://devhints.io/css Подсказки по XPath: https://devhints.io/xpath
@ -237,7 +237,7 @@ def UIOTextGet(inUIO) -> str:
UIWeb.BrowserChromeStart()
UIWeb.PageOpen("https://mail.ru")
lUIOSelectorStr = "//*[@id=\"grid\"]/div[2]/div[2]/div[3]/div[1]/ul/li[5]/div/a"
lUIO = UIOSelectorList(inUIOSelectorStr = lUIOSelectorStr)[0]
lUIO = UIWeb.UIOSelectorList(inUIOSelectorStr = lUIOSelectorStr)[0]
lTextStr = UIWeb.UIOTextGet(inUIO=lUIO)
UIWeb.BrowserClose()
@ -258,7 +258,7 @@ def UIOAttributeGet(inUIO, inAttributeStr) -> str:
UIWeb.BrowserChromeStart()
UIWeb.PageOpen("https://mail.ru")
lUIOSelectorStr = "//*[@id=\"grid\"]/div[2]/div[2]/div[3]/div[1]/ul/li[5]/div/a"
lUIO = UIOSelectorList(inUIOSelectorStr = lUIOSelectorStr)[0]
lUIO = UIWeb.UIOSelectorList(inUIOSelectorStr = lUIOSelectorStr)[0]
UIWeb.UIOAttributeGet(inUIO=lUIO, inAttributeStr = "href")
UIWeb.BrowserClose()
@ -281,7 +281,7 @@ def UIOAttributeStyleGet(inUIO, inAttributeStr) -> str:
UIWeb.BrowserChromeStart()
UIWeb.PageOpen("https://mail.ru")
lUIOSelectorStr = "//*[@id=\"grid\"]/div[2]/div[2]/div[3]/div[1]/ul/li[5]/div/a"
lUIO = UIOSelectorList(inUIOSelectorStr = lUIOSelectorStr)[0]
lUIO = UIWeb.UIOSelectorList(inUIOSelectorStr = lUIOSelectorStr)[0]
UIWeb.UIOAttributeStyleGet(inUIO=lUIO, inAttributeStr = "href")
UIWeb.BrowserClose()
@ -304,7 +304,7 @@ def UIOAttributeSet(inUIO, inAttributeStr, inValue):
UIWeb.BrowserChromeStart()
UIWeb.PageOpen("https://mail.ru")
lUIOSelectorStr = "//*[@id=\"grid\"]/div[2]/div[2]/div[3]/div[1]/ul/li[5]/div/a"
lUIO = UIOSelectorList(inUIOSelectorStr = lUIOSelectorStr)[0]
lUIO = UIWeb.UIOSelectorList(inUIOSelectorStr = lUIOSelectorStr)[0]
UIWeb.UIOAttributeSet(inUIO=lUIO, inAttributeStr = "href", inValue = "https://mail.ru")
UIWeb.BrowserClose()
@ -329,7 +329,7 @@ def UIOAttributeRemove(inUIO, inAttributeStr):
UIWeb.BrowserChromeStart()
UIWeb.PageOpen("https://mail.ru")
lUIOSelectorStr = "//*[@id=\"grid\"]/div[2]/div[2]/div[3]/div[1]/ul/li[5]/div/a"
lUIO = UIOSelectorList(inUIOSelectorStr = lUIOSelectorStr)[0]
lUIO = UIWeb.UIOSelectorList(inUIOSelectorStr = lUIOSelectorStr)[0]
UIWeb.UIOAttributeRemove(lUIO, "href")
UIWeb.BrowserClose()
@ -352,7 +352,7 @@ def UIOAttributeStyleSet(inUIO, inAttributeStr, inValue):
UIWeb.BrowserChromeStart()
UIWeb.PageOpen("https://mail.ru")
lUIOSelectorStr = "//*[@id=\"grid\"]/div[2]/div[2]/div[3]/div[1]/ul/li[5]/div/a"
lUIO = UIOSelectorList(inUIOSelectorStr = lUIOSelectorStr)[0]
lUIO = UIWeb.UIOSelectorList(inUIOSelectorStr = lUIOSelectorStr)[0]
UIWeb.UIOAttributeStyleSet(inUIO=lUIO, inAttributeStr = "color", inValue = "grey")
UIWeb.BrowserClose()
@ -377,7 +377,7 @@ def UIOAttributeStyleRemove(inUIO, inAttributeStr:str):
UIWeb.BrowserChromeStart()
UIWeb.PageOpen("https://mail.ru")
lUIOSelectorStr = "//*[@id=\"grid\"]/div[2]/div[2]/div[3]/div[1]/ul/li[5]/div/a"
lUIO = UIOSelectorList(inUIOSelectorStr = lUIOSelectorStr)[0]
lUIO = UIWeb.UIOSelectorList(inUIOSelectorStr = lUIOSelectorStr)[0]
UIWeb.UIOAttributeStyleRemove(lUIO, "color")
UIWeb.BrowserClose()
@ -400,7 +400,7 @@ def UIOClick(inUIO):
UIWeb.BrowserChromeStart()
UIWeb.PageOpen("https://mail.ru")
lUIOSelectorStr = "//*[@id=\"grid\"]/div[2]/div[2]/div[3]/div[1]/ul/li[5]/div/a"
lUIO = UIOSelectorList(inUIOSelectorStr = lUIOSelectorStr)[0]
lUIO = UIWeb.UIOSelectorList(inUIOSelectorStr = lUIOSelectorStr)[0]
UIOClick(inUIO = lUIO)
UIWeb.BrowserClose()
@ -419,7 +419,7 @@ def UIOSelectorHighlight(inUIOSelectorStr: str, inIsFirst:bool=False, inDuration
UIWeb.BrowserChromeStart()
UIWeb.PageOpen("https://mail.ru")
lUIOSelectorStr = "//*[@id=\"grid\"]/div[2]/div[2]/div[3]/div[1]/ul/li[5]/div/a"
UIOSelectorHighlight(inUIOSelectorStr = lUIOSelectorStr)
UIWeb.UIOSelectorHighlight(inUIOSelectorStr = lUIOSelectorStr)
UIWeb.BrowserClose()
:param inUIOSelectorStr: XPATH или CSS селектор UI элемента на web странице. Подсказки по CSS: https://devhints.io/css Подсказки по XPath: https://devhints.io/xpath
@ -475,7 +475,7 @@ def UIOSelectorClick(inUIOSelectorStr: str):
UIWeb.BrowserChromeStart()
UIWeb.PageOpen("https://mail.ru")
lUIOSelectorStr = "//*[@id=\"grid\"]/div[2]/div[2]/div[3]/div[1]/ul/li[5]/div/a"
UIOSelectorClick(inUIOSelectorStr = lUIOSelectorStr)
UIWeb.UIOSelectorClick(inUIOSelectorStr = lUIOSelectorStr)
UIWeb.BrowserClose()
:param inUIOSelectorStr: XPATH или CSS селектор UI элемента на web странице. Подсказки по CSS: https://devhints.io/css Подсказки по XPath: https://devhints.io/xpath
@ -493,7 +493,7 @@ def UIOSelectorWaitAppear(inUIOSelectorStr:str, inWaitSecFloat:float=UIO_WAIT_SE
UIWeb.BrowserChromeStart()
UIWeb.PageOpen("https://mail.ru")
lUIOSelectorStr = "//*[@id=\"grid\"]/div[2]/div[2]/div[3]/div[1]/ul/li[5]/div/a"
lAppearUIOList = UIOSelectorWaitAppear(inUIOSelectorStr = lUIOSelectorStr)
lAppearUIOList = UIWeb.UIOSelectorWaitAppear(inUIOSelectorStr = lUIOSelectorStr)
UIWeb.BrowserClose()
:param inUIOSelectorStr: XPATH или CSS селектор UI элемента на web странице. Подсказки по CSS: https://devhints.io/css Подсказки по XPath: https://devhints.io/xpath
@ -525,7 +525,7 @@ def UIOSelectorWaitDisappear(inUIOSelectorStr:str, inWaitSecFloat:float=UIO_WAIT
UIWeb.BrowserChromeStart()
UIWeb.PageOpen("https://mail.ru")
lUIOSelectorStr = "//*[@id=\"grid\"]/div[2]/div[2]/div[3]/div[1]/ul/li[5]/div/a"
UIOSelectorWaitDisappear(inUIOSelectorStr = lUIOSelectorStr)
UIWeb.UIOSelectorWaitDisappear(inUIOSelectorStr = lUIOSelectorStr)
UIWeb.BrowserClose()
:param inUIOSelectorStr: XPATH или CSS селектор UI элемента на web странице. Подсказки по CSS: https://devhints.io/css Подсказки по XPath: https://devhints.io/xpath
@ -557,7 +557,7 @@ def UIOSelectorDetect(inUIOSelectorStr:str) -> str:
from pyOpenRPA.Robot import UIWeb
lUIOSelectorStr = "#grid > div.grid-middle > div.grid__main-col.svelte-2y66pa > div.grid_newscol.grid_newscol__more-pulse.svelte-1yvqfic > div.grid__ccol.svelte-1yvqfic > ul > li:nth-child(5) > div > a"
lUIOSelectorStr = "//*[@id=\"grid\"]/div[2]/div[2]/div[3]/div[1]/ul/li[5]/div/a"
lResultStr = UIOSelectorDetect(inUIOSelectorStr = lUIOSelectorStr)
lResultStr = UIWeb.UIOSelectorDetect(inUIOSelectorStr = lUIOSelectorStr)
:param inUIOSelectorStr: XPATH или CSS селектор UI объекта на web странице. Подсказки по CSS: https://devhints.io/css Подсказки по XPath: https://devhints.io/xpath
:type inUIOSelectorStr: str

Loading…
Cancel
Save