天天看點

淺談RPA軟體如何填寫富文本框

作者:Mutousoft

什麼是富文本框?富文本框就是在網頁上可以輸入帶格式的文本輸入框。在富文本框中,可以設定使用不同的字型、顔色,可以控制段落、邊距,還可以插入圖檔、表情等。是實作線上編輯不可或缺的工具。在html表單控件裡,并沒有标準的富文本框控件,一般使用特定元素和css,js配合實作。

在使用RPA軟體完成自動填表時,往往遇到網頁表單富文本框不知道如何填寫,這是因為富文本框有很多不同的實作方法,針對不同類型的富文本框,必須使用對應的方法才能實作自動填表。這裡就以常見的幾種富文本框測試。

1、使用Textarea元素的富文本框

如下圖所示,頁面上的富文本輸入框,實際上是一個Textarea表單控件元素,在Textarea控件前後再配上幾個功能按鈕,這是最簡單的富文本框。由于難以實作複雜的排版功能,一般隻在一些功能要求簡單的場合使用。

淺談RPA軟體如何填寫富文本框

使用Textarea的富文本框

在木頭浏覽器裡,可以直接給該元素的value屬性指派實作填表的功能(實際上textarea元素并沒有value屬性,這是浏覽器自行封裝了value屬性)。在項目管理器中建立填寫内容步驟,擷取textarea元素,填寫屬性設定value,再輸入填寫内容就完成設定。點選單步測試,内容成功輸入到富文本框中。

淺談RPA軟體如何填寫富文本框

自動填寫Textarea富文本框

2、使用Iframe的Body元素的富文本框

目前大多數成熟的富文本架構都采用Iframe元素實作的。通過Iframe渲染一個子頁面,更友善實作複雜的排版要求。如下圖所示,我們在富文本框中輸入一個字元串,發現子頁面的body元素内容與我們輸入的字串保持一緻。那麼就可以通過直接改變子頁面的body元素内容,也就把内容輸入到富文本框了。

淺談RPA軟體如何填寫富文本框

使用iframe的富文本框

用木頭浏覽器做這個實驗,打開項目管理視窗,建立填寫内容步驟。下圖中的“[body]1"表示頁面的第一個架構子頁面的body元素。填寫屬性設定text,将把填寫内容填充到body元素的innerText。完成後單步測試一下,内容成功填寫到富文本框。

淺談RPA軟體如何填寫富文本框

自動填寫iframe富文本框

3、使用Div元素實作的富文本框

富文本輸入框也可以用div元素實作,如圖中的wangEditor架構富文本框就是應用的div元素。我們在富文本框中先輸入一個字元串,然後打開開發者工具分析元素,發現輸入内容被一個p span元素包裹着,不難發現p元素就是富文本框的段落,按照上面的思路,我們隻要找到這個富文本框div元素,修改其内容就實作填寫富文本框了。

淺談RPA軟體如何填寫富文本框

使用div元素的富文本框

馬上實踐一下,在木頭浏覽器項目管理器中,建立填寫内容步驟,通過元素id擷取富文本框div元素,填寫text屬性,即用内容填充div元素。單步測試,成功将内容填寫到富文本框。

淺談RPA軟體如何填寫富文本框

自動填寫div富文本框

以上方法都是通過改變元素屬性填表的,僅僅是改變元素屬性,并沒有觸發元素綁定的事件,這可能給後續操作帶來麻煩,需要測試送出表單。如果能成功送出表單,就可忽略後面的步驟。實際上某些頁面會提醒未填寫内容,這是怎麼回事,富文本框内已顯示了内容,送出表單時提醒未填寫,造成無法成功送出表單。這是因為富文本框元素綁定了js事件函數,用于檢查使用者的填寫狀況,直接給元素屬性指派并沒有觸發這些事件函數的執行。

淺談RPA軟體如何填寫富文本框

富文本框不承認填寫内容

首先,使用改變元素屬性的方法填表時,如果網頁很長,富文本框不可見,木頭浏覽器可以自動滾屏到富文本框處,更接近于真實的填表過程。

其次,在填表步驟中,我們可以主動觸發元素綁定的事件。元素事件分為填寫内容前和填寫内容後觸發的事件,填寫前觸發事件一般是focus、keydown等事件;填寫内容後的事件一般是keyup、input、change、blur等。

淺談RPA軟體如何填寫富文本框

觸發富文本框填寫事件

在實際頁面分析過程中,富文本框相關元素可能有多個,且嵌套比較深,以至于不能确定該觸發哪個元素綁定的哪個事件。且填寫内容元素與觸發事件元素極可能不是同一個元素,這就更加複雜了。

有一個簡單的方法,模拟鍵盤操作填寫富文本框,不需要分析元素綁定的事件,因為在鍵盤操作中,已觸發真實填表過程的全部事件。模拟鍵盤操作時浏覽器主窗體必須為活動窗體,木頭浏覽器模拟鍵盤操作前,會自動激活浏覽器窗體,并讓指定的富文本框元素擷取輸入焦點,然後才是鍵盤動作。木頭浏覽器模拟鍵盤操作還可以輸入中文(與輸入法無關)。

淺談RPA軟體如何填寫富文本框

模拟按鍵填寫富文本框

對于某些複雜的富文本框,确定在哪個元素上模拟鍵盤操作比較困難時,我們還可以擷取富文本框之前的表單控件,然後在輸入内容前添加{tab},在自動填表時,首先讓前一個元素擷取焦點,然後通過Tab按鈕使焦點跳轉到富文本框上。再繼續輸入後續内容。

淺談RPA軟體如何填寫富文本框

富文本框輸入焦點控制

圖中擷取标題輸入框元素,是以标題輸入框率先獲得輸入焦點。輸入内容“标題标題1111{tab}正文正文2222”,當碰到{tab}後,輸入焦點跳轉到下一個表單控件,即富文本框中繼續輸入正文内容。