File upload 机器人框架文件上传

File upload 机器人框架文件上传,file-upload,robotframework,File Upload,Robotframework,我必须写一个测试,其中一个文件必须上传。 使用Robot框架是否可能做到这一点 谢谢在SeleniumLibrary中有一个选择文件关键字选择文件关键字可以在文件上载文本字段中键入文件路径和名称。但是,在单击文件然后单击“打开”按钮的窗口中,关键字无法交互选择文件。 要在“打开文件”窗口中单击文件并单击“打开”按钮,可以使用Robot Framework AutoItLibrary关键字。 . ChooseFile将在给定的定位器中粘贴文件路径。这与仅输入文本类似。 您可以将AutoIT用于此

我必须写一个测试,其中一个文件必须上传。 使用Robot框架是否可能做到这一点


谢谢

在SeleniumLibrary中有一个选择文件关键字

选择文件关键字可以在文件上载文本字段中键入文件路径和名称。但是,在单击文件然后单击“打开”按钮的窗口中,关键字无法交互选择文件。 要在“打开文件”窗口中单击文件并单击“打开”按钮,可以使用Robot Framework AutoItLibrary关键字。
.

ChooseFile将在给定的定位器中粘贴文件路径。这与仅输入文本类似。 您可以将AutoIT用于此记录AutoIT脚本,并将其转换为au3文件并按如下方式运行
运行并返回RC auitscriptforfileupload.au3

可以通过几种方法解决此问题以及涉及在DOM外部单击的其他问题。ChooseFile可能可以使用,但我从未尝试过,而且我还看到了一些其他的技巧来做同样的事情

第一种方法是使用AutoIT在DOM外部单击,就像用户在进行手动测试时所做的那样。我自己从来没有使用过它,但我见过它在机器人框架中用于最小化窗口、打开MS Paint并画一条线,所以我很确定它也可以用于此

第二种方法是创建一个Robot框架关键字,以便在DOM外部的剪断图像上单击。这就是我一直用来点击我用机器人框架无法正常触及的按钮的地方。使用“剪切工具”以中间位置剪切要单击的位置的图片。它有点挑剔,但很容易使用,所以我喜欢它。下面是Python 2.7.13的代码

def click_by_image(self, image_name):
    if self.selenium_lib is None:
        self.selenium_lib = BuiltIn().get_library_instance('ExtendedSelenium2Library')
    pag.click(pag.locateCenterOnScreen(str(image_name)))
假设您熟悉创建新的Robot框架关键字(有关详细信息,请参阅其他问题/答案,这超出了本问题的范围),那么实现这一点应该非常简单


编辑:我最近切换到选择文件,因为可以假设Windows(或您正在运行的操作系统)GUI正在工作,并且可以手动执行Robot框架正在自动化的操作。有时点击几下,它也会更快,更可靠,并且可以在后台运行,而您正在关注另一个窗口。

选择文件将最有效

例如:要从执行目录导入文件以了解有关文件路径的更多详细信息,请检查操作系统库

Click Element    ${IMPORT}
Choose File      ${LOCATE_FILE}    ${CURDIR}${/}filename.txt
Click Element    ${VALIDATE_IMPORT}
我用过很多次 我刚刚在Robot框架中编写了一个函数,其中包含两个参数 1文件名 2浏览位置

File Upload for Creative
[Arguments]         ${file}=
...                 ${browsrLocator}=
${NORMAL_PATH_UPLOAD_FILE_NAME}      Normalize Path       ${DataFiles}/${file}
Choose File         ${browsrLocator}        ${NORMAL_PATH_UPLOAD_FILE_NAME}
Sleep   3s

就是这样。

问题是关于
机器人框架的
,回答是要求用户使用
autoit
?嗨,Rao,对于文件上传,您在机器人框架中唯一的选择就是使用autoit