当前位置: 首页 > article >正文

RPA Framework

啥时候写了一篇这个忘记发表了,可能有谬误,还请指正
RPA Framework

https://github.com/robocorp/rpaframework

# 由于要安装的库有点多,速度会有点慢,推荐使用清华大学的镜像进行下载安装。
# 你也可以去掉-i后面的参数,使用pypi的源进行下载。
pip install rpaframework -i https://pypi.tuna.tsinghua.edu.cn/simple

系统配置

1.配置chromedriver.exe

①有膜法上网的能力的话可以直接运行初始化代码,他说他会帮你下driver,我就没办法了。

from RPA.Browser.Selenium import Selenium
lib = Selenium()
lib.open_available_browser('https://www.baidu.com')

②没有膜法上网能力的话我推荐你先将download参数设置为False,这样可以更快查看问题。

from RPA.Browser.Selenium import Selenium
lib = Selenium()
lib.open_available_browser('https://www.baidu.com', download=False)

③他会自动去寻找你的Chrome路径,所以你不用像selenium一样配置Path。
④官方的文档里面没有说driver要怎么下载,你可以参考一下selenium的文档。

https://www.selenium.dev/documentation/webdriver/getting_started/install_drivers/

selenium官方提供了两个办法:
一是使用Webdriver Manager for Python这个库。这个库就是自动帮你下载对应的chromedriver。
先安装他 pip install webdriver-manager,然后运行下载指令。

from selenium import webdriver
from webdriver_manager.chrome import ChromeDriverManager

driver = webdriver.Chrome(ChromeDriverManager().install())

输出:

====== WebDriver manager ======
Current google-chrome version is 100.0.4896
Get LATEST chromedriver version for 100.0.4896 google-chrome
Driver [C:\Users\...\.wdm\drivers\chromedriver\win32\100.0.4896.60\chromedriver.exe] found in cache

可以看出他下载的路径,把这个chromedriver复制到你的Chome路径下就行了。

二是手动下载对应版本的chromedriver,然后复制到chrome的目录下面。
这个就没啥好说的了,如果你的chrome不是在默认目录下可能你还需要去配置一下Path。我的实在默认路径下,所以我不太清楚。

你可能会遇到的问题:

  1. Chrome: HTTPSConnectionPool(host=‘www.googleapis.com’, port=443)

open_available_browser发现你配置不完全的时候会去自动帮你下载,但是由于你的腿长问题,你没办法下载,导致超时。

2.Message: ‘chromedriver’ executable needs to be in PATH.
open_available_browser你配置了download=False,他不帮你下载了。但是你有没有配置好chromedriver所以失败。
3.

  • Chrome: Message: session not created: This version of ChromeDriver only supports Chrome version 101
    Current browser version is 100.0.4896.75 with binary path C:\Program Files\Google\Chrome\Application\chrome.exe

你下载的chromedriver版本和你的chrome不一致,比如我下载了101版本的chromedriver,但是我的chrome是100版本的,所以还是不行。

desktop库

OCR类型的Click

用ocr click之前得先安装rpaframework-recognition

pip install rpaframework-recognition

封装的是tesseract和opencv
需要安装一下tesseract的环境,可以直接从下面的地址里面下载安装包。然后配置一下PATH,如果用pycharm或者cmd记得要重启一下程序。PATH的配置需要重新开才能使用。

https://digi.bib.uni-mannheim.de/tesseract/ # tesseract Realese
https://github.com/tesseract-ocr/tessdata # 官方训练各语言库

pytesseract大家很熟悉了,通过配置lang参数和安装训练包是可以使用中文识别的。
但有一个问题:pyrpaframework的封装导致他也没办法调用tesseract的中文识别。
RPA.recognition.ocr.read为例:

# RPA.recognition.ocr.read
def read(image: Union[Image.Image, Path]):
    """Scan image for text and return it as one string.

    :param image: Path to image or Image object
    """
    image = to_image(image)

    try:
        return pytesseract.image_to_string(image).strip()
    except TesseractNotFoundError as err:
        raise EnvironmentError(INSTALL_PROMPT) from err

可以看出他封装的基本用法和我们一般的tesseract库用法一致。用PIL加载image后,调用image_to_string来识别图片。

一路查看源码,在RPA\Desktop\keywords\finder.py文件中发现了调用ocr的蛛丝马迹:

        def finder(image: Image.Image) -> List[Region]:
            matches = ocr.find(
                image=image,
                text=locator.text,
                confidence=confidence,
                region=region,
            )

            return [match["region"] for match in matches]

        return self._find_from_displays(finder)

这里的ocr的库就是我们上面看的封装了tesseract的库了。
你可以直接在ocr的那个库的find函数里面直接增加调用chi_sim的参数。这样他就能识别一些比较好识别的中文字符了,但是由于这个库的中文识别成功率很低,所以我想尝试自己外接一个库。

data = pytesseract.image_to_data(image, lang='chi_sim', output_type=pytesseract.Output.DICT)

chineseocr_lite轻量级中文ocr

https://github.com/DayBreak-u/chineseocr_lite

可能会遇到以下错误。

Microsoft Visual C++ 14.0 or greater is required.

可以参考这位大神的解决方法。
https://blog.csdn.net/weiweichun/article/details/116904033

其他

1.推荐一个pipdeptree的库,可以看到安装的第三方库的树形依赖结构,帮助查看库的实现方式。1

pip install pipdeptree

直接运行pipdeptree可以看到pip安装的各个库的树形依赖结构。

https://jingyan.baidu.com/article/5225f26b229678a7fb09085b.html


http://www.kler.cn/a/4534.html

相关文章:

  • web.xml常用配置
  • uniapp 小程序 textarea 层级穿透,聚焦光标位置错误怎么办?
  • Golang 设计模式
  • 主数据系统建设模式分析
  • WebScoket-服务器客户端双向通信
  • Linux创建server服务器实现多方信息收发
  • fwdiary(8) 区间dp,树形dp 记忆化搜索
  • 2023年学习系列之读出计划
  • SpringBoot整合Flink(施耐德PLC物联网信息采集)
  • Wing IDE 解决鼠标悬浮
  • 人工智能、深度学习和机器学习有哪些区别?
  • 免费空间主机是什么?怎么申请免费空间主机
  • English Learning - L2 第 9 次小组纠音 辅音 [s] [z] [ʃ] [ʒ] [h] [ʧ] [ʤ] 2023.3.25 周六
  • NDK FFmpeg音视频播放器五
  • 深入学习JavaScript系列(三)——this
  • JWT基础教程
  • 注意力汇聚 笔记
  • IO进程线程-标准IO(结)
  • 探究C/C++ typedef的秘密
  • Mysql排序后分页 分页数据有重复
  • python条件语句与循环语句
  • Unity游戏崩溃日志查询笔记 安卓平台 关于tombstone_00
  • TCC真没这么简单,一文讲透|分布式事务系列(三)
  • 面试官常问的设计模式及常用框架中设计模式的使用(一)
  • 树莓派学习笔记(八)树莓派Linux内核开发准备工作及概念
  • Java基础 -- 关键字Static和Final