Я застрял в тестовом наборе, где мне нужно проверить, что после выполнения действия электронная почта срабатывает, если да, то к электронной почте есть вложение.
для первого действия, которое я использую ПодождитеДля электронной почты ключевое слово библиотеки imablibrary robotframework.Теперь для части вложения, поскольку для этой цели нет ключевого слова, я написал отдельную функцию python, которой я передаю email_index в качестве параметра, записанного с помощью Wait For Email .после этого он должен пройтись по электронной почте и получить вложение.
**robot file:**
${new_email}= Wait For Email sender=${sender_email} text=${expected_content} recipient=${recepient} timeout=70
${file} get_attachments ${new_email}
**python function**
import imaplib
import email
# m is the email index passed from wait for email keyword
def get_attachments(m):
if m.get_content_maintype() == 'multipart': #multipart messages only #getting below mentioned error in this line
for part in m.walk():
#find the attachment part
print part.get_content_maintype()
if part.get_content_maintype() == 'multipart': continue
if part.get('Content-Disposition') is None: continue
#save the attachment in the program directory
filename = part.get_filename()
return filename
теперь проблема в том, что я не могу поделиться или передать сессию imaplibrary, созданную каркасом робота, в пользовательскую функцию python ,поэтому я получаю ошибку ниже.
AttributeError: у объекта 'str' нет атрибута 'get_content_maintype'
я знаю, что в библиотеке Builtin есть ключевое слово get_library_instance ()уже использует приведенный ниже код для получения экземпляра драйвера selenium2libray.
def get_webdriver_instance():
se2lib = BuiltIn().get_library_instance('Selenium2Library')
return se2lib._current_browser()
Есть ли подобный способ решения этой проблемы для imaplibrary?если нет, пожалуйста, предложите способ для этого.