『心善渊』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元素。

上一篇 下一篇

猜你喜欢

热点阅读