文件上传

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: 将文本发送至警告框

测试案例:

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文件上传和弹框处理的更多相关文章

  1. Selenium处理文件上传、弹框

    一.文件上传 上传标签是input时,可以直接使用send_keys(文件path)的方法来进行上传 二.弹框处理 页面操作中,有时会遇到JavaScript生成的alert.confirm以及pro ...

  2. Python Selenium 文件上传之SendKeys

    昨天写了Web 文件下载的ui自动化,下载之后,今天就要写web 文件上传的功能了. 当然从折腾了俩小时才上传成功.下面写一下自己操作的步骤 首先网上说的有很多方法 如 input 标签的最好做了,直 ...

  3. Python Selenium 文件上传之Autoit

    今天补充一种文件上传的方法 主要是因为工作中使用SendKeys方法不稳定,具体方法见: Python Selenium 文件上传之SendKeys 这种方法直接通过命令行执行脚本时没有问题,可以成功 ...

  4. selenium 文件上传

    一般分两个场景:一种是input标签,这种可以用selenium提供的send_keys()方法轻松解决: 另外一种非input标签实现起来比较困难,可以借助autoit工具或者SendKeys第三方 ...

  5. 自动化测试基础篇--Selenium文件上传send_keys

    摘自https://www.cnblogs.com/sanzangTst/p/8358165.html 文件上传是web页面上很常见的一个功能,自动化成功中操作起来却不是那么简单. 一般分两个场景:一 ...

  6. selenium -文件上传的实现 -对于含有input element的上传

    使用selenium做自动化时,我们经常会遇到的一个让人头疼的问题就是文件上传. 问题的难点在于selenium无法识别并操作Windows窗口,若我们可以绕过弹出框直接把文件信息上传给选择按钮,难点 ...

  7. Selenium文件上传

    转自:https://www.cnblogs.com/miaojjblog/p/9679915.html Web上本地上传图片,弹出的框Selenium是无法识别的,也就是说,selenium本身没有 ...

  8. selenium文件上传的实现

    一.对于上传文件, 从手动操作我们可以看出, 需要对window 窗体进行操作, 而对于selenium webdriver 在这方面应用就受到了限制. 但是, 庆幸的是, 对于含有input ele ...

  9. Java实现文件上传-按钮弹出上传页面

    转自: https://blessht.iteye.com/blog/1405057 最近自己在做一个小系统玩的时候涉及到了文件的上传,于是在网上找到Java上传文件的方案,最后确定使用common- ...

  10. Selenium文件上传问题

     

随机推荐

  1. Appium--滑动屏幕、不常用API

    1.滑动屏幕api #滑动屏幕 size = driver.get_window_size() #获取屏幕大小 width = size.get('width') #宽 height = size.g ...

  2. Leecode 53.最大子数组和(Java 贪心算法、动态规划两种方法)

    想法(没看解析之前想不出来)   -----------------看了解析和答案 1.贪心算法,若当前元素的之前和<0,则丢弃当前元素之前的数列 设一个maxSum作为子序列最大和,一个sum ...

  3. NX 二次开发 多个功能集成一个DLL的方法

    用C++做NX二次开发,一个功能建一个工程,管理起来很不方便,在网上找了些资料学习,成功的把多个功能做到一个工程里(多功能集成到一个DLL). 1.首先要了解外挂的菜单文件的基础,要实现多个功能集合在 ...

  4. [Lua]敏感字检测

    参考链接: https://zhuanlan.zhihu.com/p/84685657 https://www.cnblogs.com/luguoshuai/p/9254190.html 一开始打算使 ...

  5. MarkDown基本用法学习

    一级标题 语法:# +内容 二级标题1 语法:## +内容 二级标题2 三级标题 语法:### +内容 字体 加粗 语法:** +内容+ **(中间无空格) 效果:粗体 斜体 语法 * +内容+ *( ...

  6. Swust OJ977: 统计利用先序遍历创建的二叉树中的空链域个数

    题目描述 利用先序递归遍历算法创建二叉树并计算该二叉树中的空链域个数. 输入 输入为接受键盘输入的由大写英文字符和"#"字符构成的一个字符串(用于创建对应的二叉树). 输出 输出该 ...

  7. 文件上传 upload-labs Pass-17 二次渲染

    Pass-17 审计源码 $is_upload = false; $msg = null; if (isset($_POST['submit'])){ // 获得上传文件的基本信息,文件名,类型,大小 ...

  8. Linux & 标准C语言学习 <DAY11>

    一.指针     1.什么是指针         指针是一种特殊的数据类型,使用指针可以定义指针变量,指针变量存储的是整形数据,该数据代表了内存的编号(地址),可以通过这个编号访问到对应的内存     ...

  9. webpack原理(1):Webpack热更新实现原理代码分析

    热更新,主要就是把前端工程 文件变更,即时编译,然后通知到浏览器端,刷新代码. 服务单与客户端通信方式有:ajax 轮询,EventSource.websockt. 客户端刷新一般分为两种: 整体页面 ...

  10. 简述SpringAOP的实现原理

    ​ Spring默认采取的动态代理机制实现AOP,当动态代理不可用时 (代理类无接口)会使用CGlib机制. Spring提供了两种方式来生成代理对象:JDKProxy和Cglib,具体使用哪种方式生 ...