常見問題
我的測試非常慢
當您使用 @wdio/ocr-service
時,您並不是為了加速測試而使用它,而是因為您在網頁/行動應用程式中難以找到元素,並且您想要一種更容易找到它們的方法。而且我們都希望知道,當你想要某些東西時,你會失去其他東西。但是....,有一種方法可以使 @wdio/ocr-service
比正常情況下執行得更快。有關更多資訊,請參閱這裡。
我可以將此服務的指令與預設的 WebdriverIO 指令/選擇器一起使用嗎?
是的,您可以組合這些指令,使您的腳本更加強大!建議盡可能使用預設的 WebdriverIO 指令/選擇器,只有在找不到唯一選擇器或選擇器變得太脆弱時才使用此服務。
我的文字找不到,這怎麼可能?
首先,重要的是要了解此模組中的 OCR 流程是如何工作的,因此請閱讀此頁面。如果您仍然找不到您的文字,您可以嘗試以下方法。
影像區域太大
當模組需要處理螢幕截圖的較大區域時,可能找不到文字。當您使用指令時,您可以透過提供 haystack 來提供較小的區域。請檢查指令哪些指令支援提供 haystack。
文字和背景之間的對比不正確
這表示您可能在白色背景上有淺色文字,或在深色背景上有深色文字。這可能會導致無法找到文字。在下面的範例中,您可以看到文字 Why WebdriverIO?
是白色的,周圍是灰色按鈕。在這種情況下,將會導致找不到 Why WebdriverIO?
文字。透過增加特定指令的對比度,可以找到文字並點擊它,請參閱第二個影像。
await driver.ocrClickOnText({
haystack: { height: 44, width: 1108, x: 129, y: 590 },
text: "WebdriverIO?",
// // With the default contrast of 0.25, the text is not found
contrast: 1,
});
為什麼我的元素被點擊了,但行動裝置上的鍵盤卻從未彈出?
這可能會在某些文字欄位上發生,這些欄位上的點擊被判斷為太長,並被視為長按。您可以使用 ocrClickOnText
和 ocrSetValue
上的 clickDuration
選項來緩解此問題。請參閱這裡。
此模組可以像 WebdriverIO 通常那樣提供多個元素回來嗎?
不行,目前不可能。如果模組找到多個符合提供的選擇器的元素,它將自動找到具有最高匹配分數的元素。
我可以使用此服務提供的 OCR 指令完全自動化我的應用程式嗎?
我從來沒有這樣做過,但理論上應該是可行的。如果您成功了,請告訴我們 ☺️。
我看到新增了一個名為 {languageCode}.traineddata
的額外檔案,這是什麼?
{languageCode}.traineddata
是 Tesseract 使用的語言資料檔案。它包含所選語言的訓練資料,其中包含 Tesseract 有效識別英文文字和單字所需的資訊。
{languageCode}.traineddata
的內容
該檔案通常包含
- 字元集資料:有關英文語言中字元的資訊。
- 語言模型:字元如何形成單字以及單字如何形成句子的統計模型。
- 特徵提取器:有關如何從影像中提取特徵以識別字元的資料。
- 訓練資料:從在大量英文文字影像上訓練 Tesseract 衍生的資料。
為什麼 {languageCode}.traineddata
很重要?
- 語言識別:Tesseract 依賴這些訓練的資料檔案來準確識別和處理特定語言的文字。如果沒有
{languageCode}.traineddata
,Tesseract 將無法識別英文文字。 - 效能:OCR 的品質和準確性與訓練資料的品質直接相關。使用正確的訓練資料檔案可確保 OCR 流程盡可能準確。
- 相容性:確保您的專案中包含
{languageCode}.traineddata
檔案,使其更容易在不同的系統或團隊成員的機器上複製 OCR 環境。
版本控制 {languageCode}.traineddata
建議將 {languageCode}.traineddata
包含在您的版本控制系統中,原因如下
- 一致性:它可確保所有團隊成員或部署環境都使用完全相同的訓練資料版本,從而在不同環境中產生一致的 OCR 結果。
- 可重現性:將此檔案儲存在版本控制中,可以更容易地在稍後或在不同的機器上執行 OCR 流程時重現結果。
- 相依性管理:將其包含在版本控制系統中有助於管理相依性,並確保任何設定或環境配置都包含專案正確執行所需的檔案。
有沒有一種簡單的方法可以在不執行測試的情況下查看螢幕上找到哪些文字?
是的,您可以使用我們的 CLI 精靈。文件請參閱這裡