RPA答疑


變量:

部分主要對於工程中的變量進行管理和設置,支持手動拖拉至右側畫布 1全局變量:全局變量可以在整個工程中傳遞,被不同的子流程或函數進行調用,全局可見可調用 2 流程參數:只對子流程設置傳入參數,供子流程內部使用 3 流程變量:只能用於當前流程中,不能被其他流程調用 最下方顯示【工程】、【運行】和【查找】信息顯示窗口,窗體可以沿着邊界線進行拖動來調整顯示的區域。窗口右上角一排按鈕,功能分別是搜索窗口信息、清空窗口信息內容、停止運行以及窗口最大化、隱藏窗口。窗口右下角有一個小手,支持面板的移動和拖拉【固定】:點擊“固定”按鈕,組件界面固定顯示在最前端,便於連續添加多個組件。

版本管理:

​ iS-RPA9.0設計器集成了 git 本地版本管理,所有工程版本都是自動管理,每次保存都會產生一個 add + commit,可以方便的對工程版本進行管理。由於自動保存的存在,日常編輯過程有了完全保障,可以隨意進行恢復。

拾取:

​ 開啟拾取(F2):拾取過程中,按下F2鍵,關閉拾取;再次按下F2鍵,重新開啟拾取。 CS拾取(F3):拾取過程中,按下F3鍵,只拾取CS。 UIA拾取(F4):拾取過程中,按下F4鍵,進行細粒度拾取,拾取更細化。 圖片拾取(F5):拾取過程中,按下F5鍵,將切換為圖片拾取的方式,當鼠標變為截圖標志時,進行拖選截圖即可。


IE拾取(F6):拾取過程中,按下F6鍵,只拾取IE。
JAVA拾取(F7):拾取過程中,按下F7鍵,只拾取JAVA。
區域拾取(F8):用於拾取所選區域中的位置進行鼠標點擊。先選擇需要拾取的控件區域,再按下F8,在用鼠標移動到該區域中需要鼠標點擊的位置,即可完成拾取。在運行時會點擊該區域中設置的鼠標位置進行點擊。
Chrome拾取(F9):拾取過程中,按下F9鍵,只拾取Chrome。
Firefox拾取(F10):拾取過程中,按下F10鍵,只拾取Firefox。
退出錄制拾取(F12):結束並保存錄制流程。

“窗口標題”:

記錄控件所在的窗口的標題信息。勾選上則表示在操作該步驟前會進行激活窗口的操作,如去掉勾選,則不會進行窗口激活的操作。

模擬按鍵

​ 用於完成鍵盤的輸入操作。通過鼠標右鍵選擇【模擬按鍵】。 注:模擬的是真實的鍵盤輸入操作,如部分控件無法拾取,可先通過鼠標點擊控件,獲得輸入光標后,再進行鍵盤的##輸入操作。 將需要填寫的內容直接在設置中輸入即可,需要加單引號。輸入的內容也可以通過變量進行傳遞調用,輸入的內容也##可以通過變量進行傳遞調用 如需連續操作多次設置的按鍵,在按鍵后加入空格和次數即可。

鍵盤-熱鍵輸入

​ 可通過設置組合快捷鍵的方式來完成相關的快捷鍵操作,在頁面或程序當中如果快捷鍵的設定,使用該方法較佳。 在下拉框中也可以輸入自定義的按鍵,如a,合起來就是Ctrl+a的熱鍵操作,用於全選。

鍵盤-控件輸入

​ 控件輸入適用於所有瀏覽器中網銀的密碼輸入,安裝完銀行的控件后,用控件輸入拾取密碼輸入的元素框, 就可以實現密碼數據的輸入。可手工輸入文本內容,也可以通過變量的方式調用。變量使用見《變量》章節。

控制-Check

​ 通過對CheckBox類型控件(復選框)的拾取,對復選框進行勾選和去勾選的操作。 拾取的時候需要注意,需要拾取到單獨的復選框,而不能拾取到外層的整個框體。

圖片-截圖

​ 通過截取設置的區域位置,對區域內進行截屏並在本地生成圖片的操作,需要在“圖片位置”中選擇圖片保存在本地的路徑。 截圖組件可設置返回值,返回的是圖片的絕對路徑,可用變量保存該返回值。

關閉網頁標簽欄

​ 熱鍵輸入:ctrl+w

try:

​ 一開始流程先進開始,開始后面的代碼發生異常的話,就走異常后面的代碼,最后無論發生沒有發生異常,都會走結束

merge

​ 該組件主要用於將從兩個excel文件或兩個Sheet頁中讀取出的DataFrame數據集進行數據合並的操作。

列重命名

​ 對表格列進行重命名的操作。 【df】中選擇DataFrame數據集 【src_field】選擇原列名 【dst_field】選擇修改后的列名

RPADe解鎖屏,是否鎖屏等組件,Remote解鎖實現服務器遠程連接客戶端機器。

 

時間

​ 當前時間&日期 當前日期 當前時間 格式化為字符:將date日期按指定格式返回為字符串。 格式化為時間 時間相差天數 時間前|后(n)天 獲取年 獲取月 獲取日 獲取時 獲取分 獲取秒 獲取周幾

設置顏色

​ 字體顏色,范圍背景顏色

范圍刪除內容

zip:

​ 【src_file】 需要解壓的文件 例如 src_file = r’D:\abc\新建文abc.zip’ 多個文件夾解壓,逗號隔開 src_file = r’C:\11\test2.zip,C:\11\test1.zip’ 【dst_file】 解壓之后的全路徑 例如 dst_file = r’D:\xlss\aaaaa’ 【密碼】 給壓縮后的文件設置密碼。

 

zip解壓

​ zip解壓就是把壓縮文件解壓出來。 【src_file】 需要解壓的文件 例如 src_file = r’D:\abc\新建文abc.zip’ 【dst_file】 解壓之后的全路徑 例如 dst_file = r’D:\xlss\aaaaa’

OCR

​ 內置的OCR功能需要調用百度的庫進行識別,因此需要連接外網才可以。

​ 另外需要注意的是,OCR功能每天有使用次數的限制:驗證碼每天100次, 通用文字每天200次,身份證和營業執照每天各10次; 能夠滿足日常的測試與使用,若是超過則只能通過其他方式繼續使用了。

殺死進程

import osos.system('taskkill /F /IM notepad.exe')

開啟RPA的時候,盡量使用使用管理員的方式打開

字符編碼錯誤

要是中文字符串出現過多的話導致錯誤,None=-UTF-8 code 的情況發生的話,就在 "C:\ueba\studio-v6\config\language\language_cn.json"中打開這個文件,然后把“# 編譯日期:”,把它修改為“#coding=utf-8\n# 編譯日期:”,保存。重新打開設計器

模擬中軸滾動

 
        
1 使用cmd切換到RPA工作的python路徑,pip install pywin32
2 在RPA項目中創建一個全局函數組件
    import win32api
    import win32con
    # -a代表下移的距離,自己設置即可
    def test_1(a):
        win32api.mouse_event(win32con.MOUSEEVENTF_WHEEL,0,0,-a)
3 在全局函數之前加上鼠標點擊組件
4 在自己的項目中運行即可

 



 

關於設置文本獲取不到元素


在登錄工商銀行的時候,發現文本框獲取不到,這樣的話可以時候ctrl+點擊就可以獲取到元素了

輸入密碼的時候,使用控件輸入

圖片驗證碼的時候,使用截圖先截下來,然后使用獲取OCR文本,使用全局函數獲取

def idcode_check(ocr_code):
​
    code=(re.sub("0-9A-Za-z","",ocr_code))
​
    return code

 


 

鼠標拖拽功能

 
        
from ctypes import *
from ctypes.wintypes import *
​
def imouse_drag(x1, y1, x2, y2,button='left',speed=10):
    try:
        dll = windll.LoadLibrary("../Com.Isearch.Func.AutoIt/AutoItX3.dll")
        return dll.AU3_MouseClickDrag(button,x1,y1,x2,y2,speed)
    except Exception as e:
        raise e

 

可以使用全局函數包裝,然后x1,y1就是鼠標開始的位置,然后將目標位置的元素拖拽到x2,y2的位置

在設計器中嘗試解析 PDF 數據

首先,你需要一個解析 pdf 的包,我們在 iS-RPA5.0 之后內置了 pdfplumber 的包,選擇他的主要原因是這個包對表格處理比較好,而且他是 python 的原裝包,不是 java 之類轉過來的包,那么我們看看簡單的例子:

 
        
import pdfplumber   #導入pdf包
import re           #導入正則表達式包 
pdf = pdfplumber.open("path/to/file.pdf") #加載pdf
page0 = pdf.pages[0]                      #取出第一頁,你可以用for來遍歷所有頁面
tables = page0.extract_tables()           #從page0里面取出多個tables
texts = page0.extract_text()              #從page0里面取出所有文本
results = re.findall(r"([0-9]{1,3}(,[0-9]{3})*\.[0-9]+)", texts) #從文本中提取帶千分位和小數點的數字

 

請注意,pdfplumber 缺省通過表格線來區分行和列,所以下列情況是無法提取出表格的:* 你的表格是圖片,通過選擇可以確定是否圖片* 你的表格不是用線來分隔,或者分隔不全,例如列用線,行沒線這種情況下,你就需要嘗試:page0.extract_tables(table_settings={})table_settings 的寫法參考:Github 上的 Pdfplumber這個需要大家多多嘗試,另外正則表達式學習也是很關鍵的,因為你可以使用正則表達式來提取 page0.extract_text() 中提取到的文本。

查閱:http://support.i-search.com.cn/article/1540084292275

將 PDF 轉化為圖片

遇到一個項目,需要將 PDF 文件的某一頁 P 一張圖片上去,我的思路為先將 PDF 文件轉為圖片,再把兩張圖片合成,再將合成好的圖片轉為 PDF,本文將分享如何將 PDF 文件轉為圖片。通過查資料除了 wand 我嘗試過多種方法,但是其他方法貌似都是對 linux 的支持比較好,最后我用 wand 在 windows 上運行成功了。用到 python 的三個庫:io、wand、PyPDF2,涉及 wand 中的 image 類、color 類,PyPDF2 中的中的 PdfFileReader、PdfFileWriter 類。wand 庫對於圖片的處理功能還是比較強大的,wand 的 image 類依賴 ImageMagick,因此在使用 wand 之前我們需要先在電腦中安裝 ImageMagick,ImageMagick 是一個免費的創建、編輯、合成圖片的軟件。這里我遇到兩個坑:1.32 位、64 位的 python 與 32 位、64 位的 ImageMagick 兼容問題,大家在安裝前先檢查好自己的 python;2.python3 目前還不兼容 ImageMagick7 以上的版本,而 ImageMagick 的官網上下載不到 7 以下的版本,這里我把文件放在這里:c2f3a13453f14f06bfe7c29724da4d88_ImageMagick6.rar ,里邊包含 6 版本的 32 位與 64 位的 ImageMagick。就是以下報錯信息困擾了我好久:(這里完全看不出來是兼容性的問題 (┬_┬))安裝完成后,將 ImageMagic 添加到環境變量以下為代碼加注解:

 
        
import io
from wand.image import Image
from wand.color import Color
from PyPDF2 import PdfFileReader, PdfFileWriter   
def pdf_convert(filename, page, res=120):
    #初始化PdfFileReader對象
    pdfile = PdfFileReader(filename, strict=False)
    idx = page + 1
    #從此PDF文件中按編號檢索頁面
    pageObj = pdfile.getPage(page)
    #創建PdfFileWriter對象,通常PdfFileReader生成的頁面的情況下,用此對象編寫PDF文件
    dst_pdf = PdfFileWriter()
    #在PdfFileWriter中添加頁面,該頁面通常從PdfFileReader實例獲取
    dst_pdf.addPage(pageObj)
    #BytesIO實現了在內存中讀寫bytes,來操作二進制數據
    pdf_bytes = io.BytesIO()
    #將添加到此對象的頁面集合作為PDF文件寫出
    dst_pdf.write(pdf_bytes)
    #設置文件指針從0開始
    pdf_bytes.seek(0)
    #創建Image對象(支持with)將文件流傳入(resolution為分辨率參數)
    with Image(file=pdf_bytes, resolution=res) as img:
        #img = Image(file=pdf_bytes, resolution=res)
        #設置圖片格式為png
        img.format = 'png'
        #img.compression_quality = 90
        #設置背景顏色
        img.background_color = Color("white")
        #保存到當前路徑並標記頁碼(rindex返回字符最后出現的位置)
        img_path = '%s%d.png' % (filename[:filename.rindex('.')], idx)
        #以此文件名保存圖片
        img.save(filename=img_path)
        #img.destroy()
 

 

本代碼實現了將一頁 PDF 轉化為圖片,多頁只需要加循環修改 page 的值即可。有問題歡迎大家交流,有不足的地方歡迎大家指正。另附:PdfFileReader 文檔:https://pythonhosted.org/PyPDF2/PdfFileReader.htmlPdfFileWriter 文檔:https://pythonhosted.org/PyPDF2/PdfFileWriter.htmlwand.image 文檔:http://docs.wand-py.org/en/latest/wand/image.html

解析pdf文件

 
        
import pdfplumber
import re
#加載pdf文件
pdf=pdfplumber.open('C語言程序設計(第四版) 譚浩強著 高清晰版.PDF')
#取出第一頁,也可以用for來遍歷所有頁面
page0=pdf.pages[12]
#從page0中取出多個tables
tables=page0.extract_tables()
#從page0中取數所有文本
texts=page0.extract_text()
print(texts)

 

 

excel與word互轉

 
        
# coding=utf-8
import pandas as pd
from docx import Document
from docx.shared import Pt
from docx.shared import Inches
from docx.oxml.ns import qn
​
def excel_to_word():
    excel_path = 'C:\\isearch\\excel_sourse.xlsx'
    df = pd.read_excel(excel_path,header = None)
    df = df.fillna('')
    df_list = df.values
    
    document = Document()
    document.add_heading(df_list[0][0],1)
    document.add_heading(df_list[1][0],2)
    for i in range(2,len(df_list)):
        if df_list[i][1] == '' and df_list[i][2] == '' and df_list[i][3] == '' and df_list[i][0]:
            if df_list[i][0].startswith('('):
                document.add_heading(df_list[i][0],3)
            else:
                document.add_heading(df_list[i][0],2)
        else:
            if df_list[i][0]:
                document.add_paragraph(df_list[i][0]+':'+str(df_list[i][1]))
            if df_list[i][2]:
                document.add_paragraph(df_list[i][2]+':'+str(df_list[i][3]))
    document.save('C:\\isearch\\out_word.docx')
    
def word_to_excel():
    df = pd.DataFrame(columns=('1', '2', '3','4','5'))
    d = Document('C:\\isearch\\out_word.docx')
    title_index_list = []
    index_tuple_list= []
    for i in range(len(d.paragraphs)):
        if d.paragraphs[i].style.name != 'Normal':
            title_index_list.append(i)
    for i in range(len(title_index_list)-1):
        if title_index_list[i+1] - title_index_list[i] !=1 :
            index_tuple_list.append([title_index_list[i]+1,title_index_list[i+1]])
    index_tuple_list.append([title_index_list[-1]+1,len(d.paragraphs)])
    tmp_dict_list = []
    for i in range(len(index_tuple_list)):
        tmp_dict = {}
        for j in range(index_tuple_list[i][0],index_tuple_list[i][1]):
            tmp_value = d.paragraphs[j].text
            tmp_list = tmp_value.split(':')
            tmp_dict[tmp_list[0]] = tmp_list[1]
        tmp_dict_list.append(tmp_dict)
    
    for i in range(len(d.paragraphs)):
        if d.paragraphs[i].style.name != 'Normal':
            title_index_list.append(i)
    tmp_dict_list_index = 0
    for i in range(len(title_index_list)-1):
        df.loc[len(df)] = ['' for n in range(5)]
        df.iloc[-1,0] = d.paragraphs[title_index_list[i]].text
        if title_index_list[i+1] - title_index_list[i] != 1 :
            df.loc[len(df)] = ['' for n in range(5)]
            df.loc[len(df)] = ['' for n in range(5)]
            tmp_key_list = []
            for key in tmp_dict_list[tmp_dict_list_index].keys():
                tmp_key_list.append(key)
            for i in range(len(tmp_key_list)):
 

 

python 轉換 word,excel,ppt 到 pdf

需要使用的 win32com 庫產品自帶,無需額外導入。

from win32com import client
#word轉換為pdf
def word_to_pdf():
    w = client.Dispatch("Word.Application")
    doc = w.Documents.Open('d:\\test\\a.docx')
    doc.ExportAsFixedFormat('D:\\test\\word.pdf', client.constants.wdExportFormatPDF)
    w.Quit()
#excel轉換為pdf
def excel_to_pdf():
    xlApp = client.Dispatch("Excel.Application")
    books = xlApp.Workbooks.Open('d:\\test\\b.xlsx')
    books.ExportAsFixedFormat(0, 'D:\\test\\excel.pdf')
    xlApp.Quit()
#ppt轉換為pdf
def ppt_to_pdf():
    p = client.Dispatch("PowerPoint.Application")
    ppt = p.Presentations.Open('d:\\test\\c.pptx', False, False, False)
    ppt.ExportAsFixedFormat('D:\\test\\ppt.pdf', 2, PrintRange=None)
    p.Quit()
 

 

驗證碼相關

http://support.i-search.com.cn/article/1546840042899 滑動驗證碼和點擊驗證碼詳情

百度圖像識別API

  1. 注冊百度雲賬號,注冊並登陸。http://ai.baidu.com/

  2. 登陸百度雲,進入控制台,再進入應用列表創建應用,得到相應的 key

  3. 將 key 作為參數放到代碼中后,進行簡單的文本識別

  4. 在使用前安裝aip (pip install baidu-aip)

  5. from aip import AipOcr
    ​
    """ 你的 APPID AK SK """
    APP_ID = '14404096'
    API_KEY = '67LMmai5y0CGA7NoHiUb9hSf'
    SECRET_KEY = ''xxx"
    ​
    client = AipOcr(APP_ID, API_KEY, SECRET_KEY)
    ​
    ​
    def get_file_content(filePath):
        with open(filePath, 'rb') as fp:
            return fp.read()
    ​
    ​
    image = get_file_content('path')
    ​
    """ 調用通用文字識別, 圖片參數為本地圖片 """
    print(client.basicGeneral(image))

     

  6. 測試后的識別結果

  7.  

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM