在项目过程中,经常会遇到文件的上传和下载类型的操作,网上也可以找到各种方式,这里介绍的是RobotFramework框架在UI自动化过程中的文件上传和下载
文件上传
RobotFramework框架Selenium2Library库中有一个choose file关键字,可进行文件的上传操作
语法:
choose file 上传按钮元素定位 文件路径
这里依旧以邮箱上传文件为例。对于在网页上操作,可以通过 selenium IDE(安装) 录制脚本,节省自己去定位元素的时间。

这里上传文件的按钮,其实是绑定到 input 属性上了
test.robot
*** Settings ***
Library Selenium2Library
Suite Setup 登录网易邮箱
Suite Teardown 关闭浏览器
*** Keywords ***
登录网易邮箱
open browser https://mail.163.com/ chrome
sleep 5
maximize browser window
# 切换到iframe
select frame xpath=//iframe[contains(@id,'iframe')]
# 用户名输入框中输入 用户名
sleep 2
input text xpath=//*[@name="email"] 你的账号
sleep 2
# 密码输入框中输入 密码
input text xpath=//*[@name="password"] 你的密码
sleep 2
# 点击登录按钮
click element xpath=//*[@id="dologin"]
sleep 5
关闭浏览器
close browser
*** Test Cases ***
测试上传文件
click element xpath=//span[contains(.,'写 信')]
sleep 5
choose file xpath=//input[@type='file'] F:/RFstudy/filepath/upload/1.jpg
sleep 10
文件上传需要时间,所以等待时间尽量设置长一点,避免因网络原因造成文件上传失败
文件下载
文件下载比较简单,页面上通常都会有下载按钮,只需要点击下载按钮就行了
Chrome浏览器下载文件可以不用弹出弹框,在浏览器中设置一下即可(好像默认通过驱动文件控制浏览器下载文件就不会有弹框)文件会默认下载到C:\Users\Admin\Downloads目录下

test.robot
*** Settings ***
Library Selenium2Library
Suite Setup 登录网易邮箱
Suite Teardown 关闭浏览器
*** Keywords ***
登录网易邮箱
open browser https://mail.163.com/ chrome
sleep 5
maximize browser window
# 切换到iframe
select frame xpath=//iframe[contains(@id,'iframe')]
# 用户名输入框中输入 用户名
sleep 2
input text xpath=//*[@name="email"] 你的账号
sleep 2
# 密码输入框中输入 密码
input text xpath=//*[@name="password"] 你的密码
sleep 2
# 点击登录按钮
click element xpath=//*[@id="dologin"]
sleep 5
关闭浏览器
close browser
*** Test Cases ***
测试下载文件
click element xpath=//span[contains(.,'收 信')]
sleep 2
click element xpath=//div[4]/div[2]/div/div[2]/span
sleep 2
click element xpath=//a[contains(text(),'查看附件')]
sleep 2
click element xpath=//td/div/img
sleep 2
click element xpath=//a[contains(text(),'下载')]
sleep 10
如果需要指定下载到对应的目录下,就需要在打开浏览器访问网址前,加载相应的配置
这里可以对登录这个关键字进行修改,每次登录,都可以传入一个参数(文件下载目录);也可以不用传,默认给定一个下载的目录,不下载文件,登录功能也可继续使用
test.robot
*** Keywords ***
登录网易邮箱并指定文件下载目录
[Arguments] ${文件下载目录}=${默认下载目录}
${options} evaluate sys.modules['selenium.webdriver'].ChromeOptions() sys,selenium.webdriver
${prefs} create dictionary download.default_directory ${文件下载目录} #指定下载文件的目录
call method ${options} add_experimental_option prefs ${prefs}
create webdriver Chrome chrome_options=${options}
open browser https://mail.163.com/ chrome
sleep 5
maximize browser window
# 切换到iframe
select frame xpath=//iframe[contains(@id,'iframe')]
# 用户名输入框中输入 用户名
sleep 2
input text xpath=//*[@name="email"] 你的账号
sleep 2
# 密码输入框中输入 密码
input text xpath=//*[@name="password"] 你的密码
sleep 2
# 点击登录按钮
click element xpath=//*[@id="dologin"]
sleep 5
本文介绍如何使用RobotFramework实现文件的上传与下载自动化操作。针对文件上传,利用Selenium2Library中的choosefile关键字完成;文件下载则通过点击下载按钮实现,并提供Chrome浏览器设置示例以避免弹窗干扰。

1111

被折叠的 条评论
为什么被折叠?



