selenium WebDriver 自动化测试之文件上传及弹框alert处理
文件上传
input标签可直接使用send_keys(文件地址)上传文件
self.driver.find_element_by_id('上传按钮id').send_keys('文件路径+文件名')
下面以百度图片搜索上传图片为例

#!/usr/bin/python
# -*- coding: UTF-8 -*-
"""
@author:chenshifeng
@file:base.py
@time:2020/10/17
"""
import os
from selenium import webdriver
class Base:
def setup_class(self):
# option = webdriver.ChromeOptions()
# option.add_experimental_option('w3c', False)
# self.driver = webdriver.Chrome(options=option)
browser = os.getenv('browser')
if browser == 'firefox':
self.driver = webdriver.Firefox()
elif browser == 'headless':
self.driver = webdriver.phantomjs()
else:
self.driver = webdriver.Chrome()
self.driver.maximize_window()
self.driver.implicitly_wait(5)
</span><span style="color: rgba(0, 0, 255, 1)">def</span><span style="color: rgba(0, 0, 0, 1)"> teardown_class(self):
self.driver.quit()</span></pre>
上面代码为演示代码中from test_selenium.base import Base 导入的代码
#!/usr/bin/python # -*- coding: UTF-8 -*- """ @author:chenshifeng @file:test_fileupload.py @time:2020/10/18 """ from time import sleep from test_selenium.base import Baseclass TestFileUpload(Base):
def test_file_upload(self):
self.driver.get('https://image.baidu.com/')
self.driver.find_element_by_xpath('//*[@id="sttb"]/img[1]').click()
sleep(2)
self.driver.find_element_by_id('stfile').send_keys('/Users/chenshifeng/Desktop/photo.png')
sleep(5)
弹框处理机制
在页面操作中有时会遇到JavaScript所生产的alert,confirm,以及prompt弹框,可以使用switch_to.alert()方法定位到,然后使用text/accept/dismiss/send_keys等方法进行操作
操作alert常用方法
- switch_to.alert():获取当前页面上的警告框
- text:返回alert/confirm/prompt中的文字信息
- accept():接受现有警告框
- dismiss():解散现有警告框
- send_keys(KeysToSend):发送文本至警告框
举例说明:
#!/usr/bin/python # -*- coding: UTF-8 -*- """ @author:chenshifeng @file:test_alert.py @time:2020/10/18 """ from time import sleep from selenium.webdriver import ActionChains from test_selenium.base import Baseclass TestAlert(Base):
def test_alert(self):
self.driver.get('https://www.runoob.com/try/try.php?filename=jqueryui-api-droppable')
self.driver.switch_to.frame('iframeResult')
drag=self.driver.find_element_by_id('draggable')
drop=self.driver.find_element_by_id('droppable')
ActionChains(self.driver).drag_and_drop(drag,drop).perform()
sleep(2)
self.driver.switch_to.alert.accept() # 接受警告框
self.driver.switch_to.default_content()
self.driver.find_element_by_id('submitBTN').click()
sleep(2)
end
转载自https://www.cnblogs.com/feng0815/p/13834103.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· 葡萄城 AI 搜索升级:DeepSeek 加持,客户体验更智能
· 什么是nginx的强缓存和协商缓存
· 一文读懂知识蒸馏