web_UI自动化中如何解决上传文件的问题

在web_ui自动化中,经常会碰到要上传文件的功能

一般页面上有两种上传文件方式:

1.直接在页面输入路径

对于这种,只需要通过selenium定位后,直接使用send_keys(文件路径)输入路径即可

from selenium import webdriver
 
driver = webdriver.Chrome()
 
driver.get("http://xxxx")
driver.maximize_window()
 
# 定位上传文件元素
input_file = driver.find_element_by_id("xxx")
 
# 上传文件
input_file.send_keys(r"D:\learn\xx.txt")

2.会弹出电脑本地的文件系统,在本地文件中找到文件后,进行传入

对于这种情况,本文章主要就这个问题来进行解决

解决问题的思路:

1.借助第三方工具pyautogui,用程序自动控制鼠标和键盘操作

2.在打开的系统窗口中,借助pyautogui,输入文件路径

3.点击enter,将文件进行上传

pyautogui是一个纯Python的GUI自动化工具,其目的是可以用程序自动控制鼠标和键盘操作,并且支持多平台(Windows,OS X,Linux)。强烈推荐!

具体操作步骤:

1.安装模块: pip install pyautogui

2.将要上传的文件路径写入到文件名的输入框内;

3.敲回车,相当于点击【打开】按钮,注意回车presses要2次才能生效。

import os
import time
import pyautogui as ui
from selenium import webdriver
 
driver = webdriver.Chrome()
driver.implicitly_wait(20)      # 隐式等待
dir = os.getcwd()
html_dir = os.path.join(dir, 'demo.html')
driver.get(html_dir)
 
file_elem = driver.find_element_by_name('mfile')
file_elem.click()
 
# 系统之间要等待
time.sleep(1)
try:
    while True:
        x,y=ui.position() #返回鼠标的坐标
        print('position:(%s,%s)' %(x,y)) #打印坐标
        time.sleep(1)
        #每隔1s打印一次,并执行清屏
        os.system('cls')
expect KeyboardInterrupt:
    print('end')
 
file_dir = os.path.join(dir, 'test.txt')	# 要上传的文件路径
# 写入文件
ui.typewrite(file_dir)	# 直接调用写入
time.sleep(0.5)
# 输入回车键, presses表示按的次数,按一次不会生效,有可能是执行太快,建议presses=2
ui.press('enter', presses=2)
time.sleep(2)
 
driver.quit()

注意:在每步操作都要有足够的等待

参考:Python利用PyAutoGUI轻松搞定图片上传_python_脚本之家

  • 8
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
# 前端自动化测试框架(UI Autotest Framework) 框架提供统一的接口、设计原语和开发模式,支持 APP、微信、HTML5、Web 网页。自动化测试用例开发人员只需要学习一次,就可以编写前端自动化测试用例,对前端产品进行自动化测试。 ## 前端自动化测试框架包含如下模块: APP 自动化测试框架、HTML5 网页自动化测试框架、Web网页自动化测试框架。 * APP 自动化测试框架主要用于移动端APP自动化测试项目,目标程序运行在移动设备上。 * HTML5 网页自动化测试框架主要用于移动端H5网页(比如微信程序),目标网页通过移动设备上的 Chrome 或者 Safari 浏览器运行。 * Web 网页自动化测试主要用于 PC 端网页,目前支持 Chrome 、Safari 、Firefox 、IE 、Edge 浏览器。 ## 特性 Autotest Framework 有如下特性: * 采用Java语言,基于 SpringBoot 框架。 * 基于 Page Object 设计模式,将 UI 界面抽象为 Page Object,可以减少重复代码和降低维护成本。 * 基于 TesgNG 测试框架构建测试用例,支持钉钉消息通知、失败截屏、HTTP 报告、并发执行等特性。 * 统一管理和维护 Adb 连接、Appium server,对上层测试程序屏蔽实现细节,降低测试人员编写用例难度。 * 封装和抽象配置和数据仓库,直接注入到测试用例,无需额外获取。 ## 架构 ### APP 测试框架的逻辑视图 ![APP 测试框架逻辑视图](https://s2.ax1x.com/2019/09/11/nwC234.jpg) 测试程序主要分为三层: * APP 自动化测试程序层,包含 Page Object 对象和测试用例 * APP Framework 层,主要提供统一的系统封装 * Appium Server Manger 层,提供 Adb 连接、Appium Server、Apk 的管理和维护 ### APP 测试框架模块视图 ![APP 测试框架模块视图](https://s2.ax1x.com/2019/09/11/nwCWv9.jpg) ## 开发指南 ### 1. 创建测试项目 以 APP 自动化测试为例:只需要创建一个自动化测试项目,并且依赖 APP 自动化测试框架 autotest-app 即可。 ```xml <dependencies> <dependency> <groupId>com.qianmi</groupId> <artifactId>autotest-app</artifactId> <version>2.0.0-SNAPSHOT</version> </dependency> </dependencies> ``` 再配置一个 SpringBoot 的 Maven 打包插件,mainClass 属性配置为对应框架的启动类。 * APP 的启动类为:**`com.qianmi.autotest.app.AppTestApplication`** * HTML5 的启动类为:**`com.qianmi.autotest.html5.Html5TestApplication`** * Web 的启动类为:**`com.qianmi.autotest.web.WebTestApplication`** ```xml <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <executions> <execution> ## 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值