Создайте скрипт в папке scripts, например:
hello_world.py
Реализуйте скрипт
from runtime.flow import ScriptDef, FileItem
from lib.log import logger
from lib import excel
from runtime.m import retry
def reset():
logger.info("RESET")
@retry(num_times=3, sleep_time=1, reset_func=reset)
def print_item(item):
logger.info(item)
raise Exception("111")
``` def run(excel_file):
data = excel.loads2dict(excel_file)
for item in data:
print_item(item)
export = ScriptDef(
func=run,
group="Другое",
title="Тестовый процесс Excel",
arguments=[
FileItem(title="файл Excel", name="excel_file")
]
)
```3. Использование на основе класса:
```python
from lib.log import logger
from runtime.flow import ScriptDef, StringItem
class SayHello(object):
def __init__(self, name):
super().__init__()
self.name = name
def run(self):
logger.info(f"Привет {self.name}!")
export = ScriptDef(
cls=SayHello,
group="DEMO",
title="Привет, мир!",
arguments=[
StringItem(title="Имя", name="name"),
]
)
Запуск тестирования
python launch.py
GUI интерфейс реализован с использованием VUE, код находится в директории gui, управление пакетами осуществляется с помощью yarn
cd gui/rpa-bot
yarn dev
Используется pywebview для загрузки и отображения
Для выполнения скрипта потока достаточно определить метод run, но рекомендуется использовать встроенный класс Flow, который определяет следующие методы
class Flow(object):
def precheck(self):
# Проверка параметров и данных перед фактическим выполнением потока, особенно важна для задач, выполняемых по расписанию, позволяет обнаружить возможные ошибки в данных
pass
def prefun(self):
# Операции, выполняемые перед выполнением run
pass
``` def run(self):
# Code for thread execution
pass
def afterfun(self):
# Operations to be performed after run execution
pass
In real scenarios, many threads load an Excel table and perform actions row by row. For such tasks, the basic classes ListDataFlow and MultDataFlow are provided, which implement basic mechanisms for scheduling tasks, error handling, and retry attempts. All such threads can inherit from the ListDataFlow class, for example, the following thread for mass email sending.```python
class Mail(object):
mail: str # электронная почта
name: str # имя
text: str # текст письма
def __str__(self):
return f"{self.mail}"
class SendMail(ListDataFlow):
def __init__(self, excel_file):
self.excel_file = excel_file
def load_list(self):
# Этот метод загружает данные для обработки, обычно это загрузка таблицы, возвращаемый объект Item должен иметь определённый метод __str__,
# который возвращает информацию, которая может быть использована для описания задачи
# Верхний уровень использует этот метод для записи ошибок
return excel.load(self.excel_file, Item, {})
def run_job(self, item):
# Этот метод выполняет конкретную задачу, если возникает ошибка, она должна быть выброшена, верхний уровень кода будет её перехватывать и записывать в журнал ошибок
# send_mail(item.mail, item.text)
def reset(self):
# Этот метод используется для сброса состояния при возникновении ошибки, например, перезапуск браузера или перезаход, чтобы следующая задача могла быть выполнена
pass
```### Формы GUI
В настоящее время доступны следующие элементы формы:
1. StringItem
Основной текстовый ввод
StringItem(title="Имя", name="name")
2. NumberItem
Числовое поле ввода
NumberItem(title="Число", name="number")
3. FileItem
Поле выбора файла
FileItem(title="Excel таблица", name="excel_file")
4. DirectoryItem
Поле выбора директории
DirectoryItem(title="Папка", name="image_dir")
5. SelectItem
Поле выбора из списка
SelectItem(title="Целевой URL", name="url", options=[
"http://baidu.com",
"http://google.com"
]),
6. UserSelectItem
Поле выбора пользователя, обратите внимание, что по умолчанию файл с учетными записями и паролями читается из C:\RPA\аккаунт.xlsx
UserSelectItem(title="Аккаунт", username_field="name", password_field="pwd"),
### Компиляция и упаковка
1. Все зависимости, которые загружаются во всех скриптах, должны быть объявлены для импорта в файле runtime\load.py. Это необходимо для упаковки pyinstaller, чтобы он включил их. Объявленные часто используемые зависимости приведены ниже:
```python
import win32
import jinja2
import requests
import openpyxl
import xlrd
import selenium
import fitz
import cv2
import numpy
import PIL
import imutils
import docxtpl
import pdfplumber
import Crypto
import pyperclip
import pynput
```
2. Чтобы опубликовать определенные скрипты, можно изменить конфигурацию в файле build.py:
```python
ENV_CONFIG = {
"default": ["hello_world.py"],
}
```
Затем выполните
```bash
python build.py default
```
3. Обычно, если зависимости не изменились, не требуется заново упаковывать и публиковать exe. Достаточно обновить скрипты в директории scripts для публикации.## Несколько базовых библиотек
### Использование LOG библиотеки
```python
from lib.log import logger
logger.info("msg")
logger.error("msg", stack_info=True)
from lib import snapshot
snapshot.save_check_point("taskname", "progress")
snapshot.save_error("taskname", ["e1", "e2"])
from lib import excel
class Item(object):
idcard: str
username: str
time_number: str
lian_approver: str
items = excel.loads("Файл.xlsx", Item, {
"idcard": {"title": "Идентификатор заявителя", "required": True},
"username": {"title": "Имя заявителя", "required": True},
"time_number": {"title": "Дата оплаты", "required": True},
"lian_approver": {"title": "Инициатор дела", "required": True}
})
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарии ( 0 )