通过selenium完成上传和下载操作

发表于:2021-5-24 09:38

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:测试安静    来源:51Testing软件测试网原创

  前言
  在平常工作中经常在浏览器上进行一系列的上传和下载操作,既然是在浏览器上进行的操作,那么上传和下载操作可以不可以通过selenium进行来完成呢?安静本篇内容就给大家解读下如何通过selenium进行上传和下载操作。

  上传操作
  通常我们网页上的上传分为input标签和非input标签,其中input标签直接可以通过webdriver中的方法send_keys方法进行直接输入需要上传文件地址,非input标签的话需要借助外部工具进行辅助我们完成上传操作。

  input标签
  安静先写input标签的HTML上传文件:
<!DOCTYPE html>
<html>
<head> 
<meta charset="utf-8"> 
<title>跟着安静学测试</title> 
</head>
<body>
 
<form action="demo-form.php">
  选择图片: <input type="file" name="img" multiple>
  <input type="submit">
</form>
 
</body>
</html>

  直接通过send_keys进行输入文件地址:
from selenium import webdriver
import time
driver = webdriver.Chrome()
driver.get('E:\\web\\Upload.html')
time.sleep(2)
driver.find_element_by_name('img').send_keys('E:\\web\\123.jpg')

  通过下方执行结果的动图可以看出来,我们已经成功进行对图片进行了上传操作。

  非input标签
  安静这里找到了一个关于非input标签的上传实例,然后通过pywinauto这个第三方库控制Windows控件进行完成上传操作。

  pywinauto来控制Windows上的控件来做一些自动化操作的库。可以通过pip进行安装。先看具体代码,然后安静在进行解释代码中内容:
from selenium import webdriver
import time
import pywinauto
driver = webdriver.Chrome()
driver.get('https://www.jq22.com/yanshi17984')
driver.switch_to.frame("iframe")
driver.find_element_by_class_name('addImg').click()
time.sleep(2)
# 通过窗口打开
app = pywinauto.Desktop()
# 通过弹框名称进入控件中
win = app['打开']
# 输入上传图片的地址
win['Edit'].type_keys(r'E:\web\123.jpg')
#点击打开按钮
win['Button'].click()

  进行执行代码后可以看到我们已经完成了对非input标签上传的操作。

  其中代码中关于pywinauto的内容,大家可能对几个参数有问题,打开、Edit、Button是怎么来的?其实这里是通过工具进行查看Windows控件内容来得到的。

  具体关于pywinauto方面内容,大家可以看下官方文档进行查看。

  下载操作
  下载操作其实和正常的点击下载操作一样的。这里安静通过加载chrome配置,来防止弹框的问题。
import time
from selenium import webdriver
path = r'C:\Users\xxxxx\AppData\Local\Google\Chrome\User Data1'
options = webdriver.ChromeOptions()
# 增加个人浏览器地址
options.add_argument('--user-data-dir='+path)
driver = webdriver.Chrome(chrome_options=options)
driver.get('https://www.baidu.com')
driver.find_element_by_id('kw').send_keys('chrome')
driver.find_element_by_id('su').click()
time.sleep(2)
driver.find_element_by_xpath('//*[@class="c-btn c-btn-primary OP_LOG_BTN pc-js-btn_n7kWx"]').click()

  通过执行代码后,发现已经成功的将chrome浏览器下载下来了。

  总结
  安静这里通过两个小案例来简单的介绍了如何通过selenium进行对页面上完成上传和下载操作。希望对您有所帮助。

      版权声明:本文出自51Testing会员投稿,51Testing软件测试网及相关内容提供者拥有内容的全部版权,未经明确的书面许可,任何人或单位不得对本网站内容复制、转载或进行镜像,否则将追究法律责任。
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号