软件测试 使用selenium实现文件上传_selenium选择文件上传

62 阅读2分钟

img img

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

了解详情》docs.qq.com/doc/DSlVlZExWQ0FRSE9H

input标签文件上传

一般情况下,文件上传的按钮是一个<input>标签,并且附带的type属性为file,这样的标签我们可以使用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.导入selenium
from selenium import webdriver
from time import sleep
import os
from selenium.webdriver.common.by import By

# 2.打开浏览器


driver = webdriver.Chrome()

# 3.打开页面
url = "file:///" + os.path.abspath("test555.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\...\Desktop\测试文件.txt")
sleep(5)

# 5.关闭浏览器
driver.quit()

非input标签文件上传

对于非input标签的文件上传控件,我们需要先找到该控件的元素。这通常需要查看目标网页的HTML结构,以确定控件的选择器。例如,可能是一个<div>元素或<button>元素,点击它将触发文件选择对话框。

页面代码如下:

<!DOCTYPE html>
<html lang="zh-cn">
<meta charset="UTF-8">
<body>
    <div id="file-upload">
        <button id="upload-button">上传文件</button>
    </div>
</body>
</html>

在这个示例中,我们有一个<div>元素,其中包含一个按钮,用于触发文件上传操作。实现文件上传的代码如下:

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys

# 设置WebDriver路径
driver = webdriver.Chrome(executable_path="path_to_chromedriver")

# 打开一个示例网页
driver.get("https://example.com")

# 找到上传按钮
upload_button = driver.find_element(By.ID,"upload-button")

# 点击上传按钮
upload_button.click()

# 模拟文件选择对话框
file_input = driver.switch_to.active_element


![img](https://p3-xtjj-sign.byteimg.com/tos-cn-i-73owjymdk6/48c0bdd6634443dca5aa5d5baefac7e0~tplv-73owjymdk6-jj-mark-v1:0:0:0:0:5o6Y6YeR5oqA5pyv56S-5Yy6IEAg55So5oi3MzIxMjA3NDIwNDUy:q75.awebp?rk3s=f64ab15b&x-expires=1775370268&x-signature=RpM1zdSRo3zs0aSaeeQAkejr2dY%3D)
![img](https://p3-xtjj-sign.byteimg.com/tos-cn-i-73owjymdk6/abac6b9b02bf425ea9222bb41fcd4bd6~tplv-73owjymdk6-jj-mark-v1:0:0:0:0:5o6Y6YeR5oqA5pyv56S-5Yy6IEAg55So5oi3MzIxMjA3NDIwNDUy:q75.awebp?rk3s=f64ab15b&x-expires=1775370268&x-signature=xuTG1Rd1JBnJHZZgBOGVQRKB9bc%3D)
![img](https://p3-xtjj-sign.byteimg.com/tos-cn-i-73owjymdk6/aab6713601b54ccb9331aae2504966af~tplv-73owjymdk6-jj-mark-v1:0:0:0:0:5o6Y6YeR5oqA5pyv56S-5Yy6IEAg55So5oi3MzIxMjA3NDIwNDUy:q75.awebp?rk3s=f64ab15b&x-expires=1775370268&x-signature=bc7OVU%2Bki%2BOtAXHwHXgFy8Embo0%3D)

**既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上软件测试知识点,真正体系化!**

**开源项目:docs.qq.com/doc/DSlVlZExWQ0FRSE9H**