selenium文件上传和弹框处理
文件上传
input 标签可以直接使用send_keys(文件地址)上传文件
用法:
el = driver.find_element_by_id('上传按钮id')
el.send_keys("文件路径+文件名")
demo, 百度图片上传为例子
from base import *
class TestUpload(Base):
def test_upload(self):
url = 'https://image.baidu.com/'
self.driver.get(url)
self.driver.find_element_by_xpath("//img[@class='st_camera_off']").click()
self.driver.find_element_by_id("stfile").send_keys("D:\\my_project\\git_deve\\development\\img\\雪球自选设置测试用例.png") # 发送文件
time.sleep(3)
if __name__ == '__main__':
pytest.main(["-vs", "test_upload.py"])
弹框处理机制
操作alert常用方法:
- switch_to.alert(): 获取当前页面上的警告框
- text: 返回alert / confirm / prompt 中的文字系信息
- accept() : 接受现有警告框
- dismiss(): 解散现有警告框
- send_keys(KeysToSend) : 发送文本至警告框。 KeysToSend: 将文本发送至警告框
测试案例:
- 打开网页 https://www.runoob.com/try/try.php?filename=jqueryui-api-droppable
- 操作窗口右侧页面,将元素1拖拽到元素2
- 这时候会有一个alert弹框,点击弹框中的确定
- 然后再按点击运行
- 关闭网页
from base import *
from selenium.webdriver import ActionChains
class TestUpload(Base):
@pytest.mark.skip
def test_upload(self):
url = 'https://image.baidu.com/'
self.driver.get(url)
self.driver.find_element_by_xpath("//img[@class='st_camera_off']").click()
self.driver.find_element_by_id("stfile").send_keys("D:\\my_project\\git_deve\\development\\img\\雪球自选设置测试用例.png") # 发送文件
time.sleep(3)
def test_la(self):
url = "https://www.runoob.com/try/try.php?filename=jqueryui-api-droppable"
self.driver.get(url)
self.driver.switch_to.frame("iframeResult") # 可以参考 https://www.cnblogs.com/c-keke/p/14942162.html
draggable = self.driver.find_element_by_xpath("//div[@id='draggable']") # 拿起
droppable = self.driver.find_element_by_xpath("//div[@id='droppable']") # 放下
action = ActionChains(self.driver) # 初始化动作链, 可以参考:https://www.cnblogs.com/c-keke/p/14928477.html
action.drag_and_drop(draggable, droppable).pause(2).perform()
time.sleep(1)
self.driver.switch_to.alert.accept() # 点击确定这个弹出框
self.driver.switch_to.default_content() # 返回默认的节点
self.driver.find_element_by_xpath("//button[contains(text(),'点击运行')]").click()
if __name__ == '__main__':
pytest.main(["-vs", "test_upload.py"])
完。
selenium文件上传和弹框处理的更多相关文章
- Selenium处理文件上传、弹框
一.文件上传 上传标签是input时,可以直接使用send_keys(文件path)的方法来进行上传 二.弹框处理 页面操作中,有时会遇到JavaScript生成的alert.confirm以及pro ...
- Python Selenium 文件上传之SendKeys
昨天写了Web 文件下载的ui自动化,下载之后,今天就要写web 文件上传的功能了. 当然从折腾了俩小时才上传成功.下面写一下自己操作的步骤 首先网上说的有很多方法 如 input 标签的最好做了,直 ...
- Python Selenium 文件上传之Autoit
今天补充一种文件上传的方法 主要是因为工作中使用SendKeys方法不稳定,具体方法见: Python Selenium 文件上传之SendKeys 这种方法直接通过命令行执行脚本时没有问题,可以成功 ...
- selenium 文件上传
一般分两个场景:一种是input标签,这种可以用selenium提供的send_keys()方法轻松解决: 另外一种非input标签实现起来比较困难,可以借助autoit工具或者SendKeys第三方 ...
- 自动化测试基础篇--Selenium文件上传send_keys
摘自https://www.cnblogs.com/sanzangTst/p/8358165.html 文件上传是web页面上很常见的一个功能,自动化成功中操作起来却不是那么简单. 一般分两个场景:一 ...
- selenium -文件上传的实现 -对于含有input element的上传
使用selenium做自动化时,我们经常会遇到的一个让人头疼的问题就是文件上传. 问题的难点在于selenium无法识别并操作Windows窗口,若我们可以绕过弹出框直接把文件信息上传给选择按钮,难点 ...
- Selenium文件上传
转自:https://www.cnblogs.com/miaojjblog/p/9679915.html Web上本地上传图片,弹出的框Selenium是无法识别的,也就是说,selenium本身没有 ...
- selenium文件上传的实现
一.对于上传文件, 从手动操作我们可以看出, 需要对window 窗体进行操作, 而对于selenium webdriver 在这方面应用就受到了限制. 但是, 庆幸的是, 对于含有input ele ...
- Java实现文件上传-按钮弹出上传页面
转自: https://blessht.iteye.com/blog/1405057 最近自己在做一个小系统玩的时候涉及到了文件的上传,于是在网上找到Java上传文件的方案,最后确定使用common- ...
- Selenium文件上传问题
随机推荐
- 120、商城业务---订单服务---rabbitTemplate循环依赖问题
https://blog.csdn.net/qq_41731316/article/details/119803796
- 01.html大致主体格式
<!DOCTYPE html> 不是HTML标签,就是文档声明标签 告诉浏览器使用哪种html版本来显示网页,其必须在文档中的最前面位置,要放在<html>标签之前, < ...
- vue中的观察者模式和发布订阅者模式
观察者模式 目标者对象和观察者对象有相互依赖的关系,观察者对某个对象的状态进行观察,如果对象的状态发生改变,就会通知所有依赖这个对象的观察者, 目标者对象 Subject,拥有方法:添加 / 删除 / ...
- 从babel编译结果分析class的实现原理
示例: class A { // 属性表达式 prop1 = 1; // get方法 get value() { console.log('Getting the current value!'); ...
- 接口自动化框架两大神器-正则提取器和Jsonpath提取器
一 接口自动化框架 一 框架结构 二 结构说明 - API 用于封装被测系统的接口(用request模块封装的请求方法) - TestCase 将一个或多个接口封装成测试用例,并使用UnitTest管 ...
- 使用vCenter对ESXi主机进行补丁升级
使用vCenter 对ESXi 主机进行补丁升级 背景说明:公司内部有许多ESXi主机需要进行补丁升级,记录一下通过vCenter对ESXi主机进行补丁升级的过程,也可以使用esxcli命令行方式: ...
- gRPC之.Net6中的初步使用说明
1.介绍 GRPC是一个高性能.通用的开源远程过程调用(RPC)框架,基于底层HTTP/2协议标准和协议层Protobuf序列化协议开发,支持众多的开发语言,由Google开源. gRPC也是基于以下 ...
- Jetson查看JetPack版本
Jetson查看JetPack版本 查看L4T版本 cat /etc/nv_tegra_release 我的L4T版本为 32.5.1 在官网查找对应的jetpack版本 This page incl ...
- 基于Pierre Dellacherie的俄罗斯方块-05Pierre Dellacherie算法
基于Pierre Dellacherie的俄罗斯方块-05Pierre Dellacherie算法 Pierre Dellacherie算法感觉上像是一个遍历算法,给与各个参数不同的权重,使得更加合理 ...
- 基于声网 Flutter SDK 实现互动直播
前言 互动直播是实现很多热门场景的基础,例如直播带货.秀场直播,还有类似抖音的直播 PK等.本文是由声网社区的开发者"小猿"撰写的Flutter基础教程系列中的第二篇,他将带着大家 ...