当前位置:网站首页>RobotFramework 之 文件上传和下载

RobotFramework 之 文件上传和下载

2022-04-23 14:03:00 沉觞流年

RobotFramework 之 文件上传和下载

在项目过程中,经常会遇到文件的上传和下载类型的操作,网上也可以找到各种方式,这里介绍的是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

版权声明
本文为[沉觞流年]所创,转载请带上原文链接,感谢
https://blog.csdn.net/qq_44614026/article/details/115601408