#robotframework
#robotframework
Вопрос:
Я хотел бы найти какое-нибудь слово после конвертации PDF.
1) У меня есть 2 PDF в path C:TRMPDF 1.pdf и 2.pdf
- 1. в pdf есть слово «ICG00058»
- 2. в pdf есть слово «ICG00065»
2) Уже конвертируйте Pdf в Txt по цене ${detail_1}.
3) Предположим, я не знаю слово в 1.pdf, и я хочу проверить, имеет ли 1.pdf значение ICG00058 или ICG00065.
Мне очень жаль, если вопрос не ясен. Пожалуйста, изучите эту проблему для меня, потому что это чрезвычайно важно для моей работы.
*** Settings ***
Library Selenium2Library
Library String
Library Pdf2TextLibrary
*** Test Cases ***
Read PDF
${detail_1} Convert Pdf To Txt C:\TRM\PDF\1.pdf
LOG ${detail_1}
${ID_1} Get Regexp Matches ${detail_1} ICG00058
${ID_2} Get Regexp Matches ${detail_1} ICG00065
Run Keyword And Ignore Error $ID_1[0] in $detail_1 LOG ${ID_1}
Run Keyword If $ID_2[0] in $detail_1 LOG ${ID_2}
ОШИБКА:
Ошибка вычисления выражения ‘RF_VAR_ID_2 [0]в RF_VAR_detail_2’: ошибка индекса: индекс списка находится вне диапазона
Ответ №1:
Я использовал pdfgrep
точно так же, как grep
вы можете искать regex
выражения в PDF без какого-либо промежуточного шага.
Я использовал его для поиска номеров ISBN в PDF-файлах и автоматического переименования имени файла для включения найденных ISBN-адресов или записи имени файла и ISBN в базу данных MySQL.
Если вы не знаете, как писать, regex
есть несколько онлайн-инструментов для тестирования regex
в режиме онлайн, пока вы не найдете подходящий для использования.
Ответ №2:
Вам нужно вызвать ключевое слово Evaluate, если вы хотите запустить python в вашем скрипте робота, вот почему вы видите ошибку, о которой вы упомянули.
В вашем случае, хотя вы могли бы использовать Получить индекс из списка, а список должен содержать ключевые слова Value:
${matched_id_1}= Get Index From List ${ID_1} 0
Run Keyword And Ignore Error List Should Contain Value ${detail_1} ${matched_id_1}
${matched_id_2}= Get Index From List ${ID_2} 0
Run Keyword And Ignore Error List Should Contain Value ${detail_1} ${matched_id_2}
Если вы хотите использовать List Should Contain Value
ключевые слова в качестве утверждений, просто удалите ключевое слово Run и проигнорируйте ключевые слова Error в ответе
Комментарии:
1. После того, как я использую ключевое слово, получаю индекс из списка $ {ID_1} 0. Я сталкивался с подобным $ {matched_id_1} = -1 в журнале. Ожидаемый должен быть ICG00058.
2. Если вы получаете результат из regexp, вторая часть, вероятно, не нужна, поскольку вы просто проверяете, что значение, которое вы уже извлекли из своего файла, находится в вашем файле. Добавьте полученный результат в
${ID_1}
и${ID_2}
в свой вопрос