Loading

UI自动化学习笔记- Selenium操作文件上传下载

1、Selenium实现文件上传

文件上传在Web页面上是非常常见的一个操作,一般页面中的文件上传按钮分为两种,一种是input标签,另一种是非input标签

1.1 方式一:input标签上传文件

这种方式的文件上传比较简单,可以定位到 input 标签后,直接 .send_keys() 就ok了

示例代码

# 1.导入selenium
from selenium import webdriver

# 2.打开浏览器
driver = webdriver.Chrome()

# 3.打开注册A页面(页面地址根据自己的需要修改)
url = "xxx"
driver.get(url)
driver.maximize_window()

# 4.定位上传文件按钮
upfile = driver.find_element_by_name("upfile")

# 5.使用send_keys方法上传文件
upfile.send_keys(r"C:\Users\L\Desktop\测试上传文件.txt")

# 6.关闭浏览器
driver.quit()
1.2 方式二:非input文件上传

这种非input的文件上传实现起来相对来说要复杂一些,可以借助 autoit 工具或者 SendKeys 第三方库来实现。在上传的过程当中一般要打开系统的Windows窗口,从窗口选择本地文件添加。

# 打开上传网站
driver.get("https://tinypng.com/")
paths = Path.cwd().parent

# 触发文件上传的操作
driver.find_element_by_css_selector("section.target").click()

time.sleep(2)
# 一级顶层窗口
dialog = win32gui.FindWindow("#32770", "打开")

# 二级窗口
comboBoxEx32 = win32gui.FindWindowEx(dialog, 0, "ComboBoxEx32", None)

# 三级窗口
comboBox = win32gui.FindWindowEx(comboBoxEx32, 0, "ComboBox", None)

# 四级窗口 -- 文件路径输入区域
edit = win32gui.FindWindowEx(comboBox, 0, "Edit", None)

# 二级窗口 -- 打开按钮
button = win32gui.FindWindowEx(dialog, 0, "Button", None)

# 1、输入文件路径
filepath = f"{paths}\\resources\\11.png"
win32gui.SendMessage(edit, win32con.WM_SETTEXT, None, filepath)

# 2、点击打开按钮
win32gui.SendMessage(dialog, win32con.WM_COMMAND, 1, button)

2、Selenium实现文件下载

这里主要讲一下Chrome浏览器文件下载

示例

首先需要设置option:

(1)download.default_directory:设置下载路径

(2)profile.default_content_settings.popups:设置为0 禁止弹出窗口

# 1.导入selenium
from selenium import webdriver
from time import sleep

# 2. 创建谷歌浏览器加载项对象
options = webdriver.ChromeOptions()

# 3. 定义加载项参数
prefs = {'profile.default_content_settings.popups': 0,
         'download.default_directory': 'f:\\'}

# 4.将加载项参数添加到谷歌浏览器加载项对象中
options.add_experimental_option('prefs', prefs)

# 5. 创建浏览器对象,并添加加载项对象
driver = webdriver.Chrome(options=options)

# 6. 方位下载页面
driver.get('https://npm.taobao.org/mirrors/chromedriver/80.0.3987.106/')

# 7. 点击下载
driver.find_element_by_link_text("chromedriver_win32.zip").click()
sleep(3)

# 8.关闭浏览器
driver.quit()
posted @ 2021-08-09 17:13  本该是你  阅读(244)  评论(0编辑  收藏  举报