『心善渊』Selenium3.0基础 — 23.文件上传
2020-09-02 本文已影响0人
繁华似锦Fighting
说明:
文件上传是web页面上很常见的一个功能,用脚本去实现文件上传很简单。
一般场景:在页面中的上传按钮是一个<input>标签,其中type属性为type="file"
,这种可以用selenium提供的send_keys()
方法轻松解决。
示例:
页面代码片段:
<!DOCTYPE html>
<html lang="zh-cn">
<head>
<meta charset="UTF-8">
</head>
<body>
<fieldset>
<legend>文件上传</legend>
<form action="">
<input type="file" name="upfile" value="">
</form>
</fieldset>
</fieldset>
</body>
</html>
脚本代码:
"""
1.学习目标:
掌握文件上传功能操作
2.操作步骤
此上传方式适用大多数情况。
上传文件标签为input类型,并且type=file时可使用此方式上传。
使用send_keys(“需要上传的文件的路径")
3.需求
在页面中,实现文件上传
4.总结
4.1 在上传文件的时候,对文件类型,大小等做充分验证。
4.2 在执行上传文件脚本时,加一定的等待时间,sleep()。
4.3 大多数上传文件都是input类型并且type=file。
4.4 对于非input标签的上传文件功能,使用Sendkeys库来实现。
"""
# 1.导入selenium
from selenium import webdriver
from time import sleep
import os
# 2.打开浏览器
driver = webdriver.Chrome()
# 3.打开注册A页面
url = "file:///" + os.path.abspath("./1.html")
driver.get(url)
sleep(2)
# 4.上传文件
# 4.1 定位上传文件按钮
upfile = driver.find_element_by_name("upfile")
# 4.2 使用send_keys方法上传文件
upfile.send_keys(r"C:\Users\L\Desktop\测试上传文件.txt")
sleep(5)
# 5.关闭浏览器
driver.quit()
提示:
另外一种非<input>标签的上传文件按钮,实现起来比较困难,可以借助autoit工具或者SendKeys第三方库来实现。
上传过程一般要打开一个系统的window 窗口,从窗口选择本地文件添加。所以,一般会卡在如何操作本地window 窗口。
总结:
其实上传本地文件没我们想的那么复杂,只要定位上传按钮,通send_keys()
方法添加本地文件路径就可以了。绝对路径和相对路径都可以,关键是上传的文件存在。
小练习:使用邮箱给其他人发送一封代附件的邮件。添加附件,就是上传文件。邮件正文的操作就是操作iframe元素。