Selenium 处理windows 上传 窗口
selenium无法控制windows窗口,故需要引用第三方工具autoit.
在如下网址,下载并安装
http://www.autoitscript.com/site/autoit/
安装autoit-v3-setup.exe
对于下图窗口,selenium是无法定位控制的,可以使用finder tool来查看文件名的属性,class等


1.可以使用autoit工具将以下代码保存为.au3格式,然后run ,成为.exe格式,在代码中调用
var Autoit = new AutoItX3();
const string widowTitle = "[Class:#32770]"; //上传窗口的类名:Class:#327700
Autoit.WinWait(widowTitle, "File Upload", ); //暂停执行脚本,直到上传对话框出现
Autoit.WinActivate(widowTitle, "File Upload"); //激活上传窗口
Autoit.ControlFocus(widowTitle, "File Upload", "[CLASS:Edit; INSTANCE:1]"); //控制焦点在输入框上
//Autoit.ControlSetText(widowTitle, "", "[CLASS:Edit; INSTANCE:1]", "D:\\temp\\Desert.jpg"); //这行代码是另一个输入路径的方法
Autoit.Send(@"D:\123.jpg"); //输入文件路径
在代码中调用,此程序(Helper.RunProgram为封装好的一个方法)
Helper.RunProgram(Helper.GetCurrentDllDir.Replace(@"bin\Debug\", "") + "AutoitScriptExe\\xxx.exe")
2.或者直接引用:AutoItX3.dll
然后直接在vs上写:
var Autoit = new AutoItX3();
const string widowTitle = "[Class:#32770]"; //上传窗口的类名:Class:#327700
Autoit.WinWait(widowTitle, "File Upload", ); //暂停执行脚本,直到上传对话框出现
Autoit.WinActivate(widowTitle, "File Upload"); //激活上传窗口
Autoit.ControlFocus(widowTitle, "File Upload", "[CLASS:Edit; INSTANCE:1]"); //控制焦点在输入框上
//Autoit.ControlSetText(widowTitle, "", "[CLASS:Edit; INSTANCE:1]", "D:\\temp\\Desert.jpg"); //这行代码是另一个输入路径的方法
Autoit.Send(@"D:\123.jpg"); //输入文件路径
第二种方式:
通过控制台输入代码发现:
document.querySelector('#fileToUpload').className=''
显示input:

使用js执行控制上传
var js_UploadFile=string.Format("document.querySelector('#fileToUpload').className='12'");
((IJavaScriptExecutor) driver).ExecuteScript(js_UploadFile);
driver.FindElement(By.Id("fileToUpload")).SendKeys("D:\\log.txt");
driver.FindElement(By.CssSelector("table.table-pw_next a.btn_upload")).Click();
Selenium 处理windows 上传 窗口的更多相关文章
- TeamCity编译执行selenium上传窗口脚本缺陷
2015-07-04 18:05 编写本文 TeamCity编译selenium脚本,对于上传窗口处理只支持sendKeys的使用,不支持模拟人为按下Enter键和使用autoIt等操作,即使本地调试 ...
- selenium之 文件上传所有方法整理总结【转】
本文转自:https://blog.csdn.net/huilan_same/article/details/52439546 文件上传是所有UI自动化测试都要面对的一个头疼问题,今天博主在这里给大家 ...
- selenium之 文件上传方法
文件上传是所有UI自动化测试都要面对的一个头疼问题 首先,我们要区分出上传按钮的种类,大体上可以分为两种,一种是input框,另外一种就比较复杂,通过js.flash等实现,标签非input 我们分别 ...
- selenium之文件上传
文件上传是所有UI自动化测试都要面对的一个头疼问题,今天博主在这里给大家分享下自己处理文件上传的经验,希望能够帮助到广大被文件上传坑住的seleniumer. 首先,我们要区分出上传按钮的种类,大体上 ...
- selenium之 文件上传所有方法整理总结
本文转载“灰蓝”的原创博客.http://blog.csdn.net/huilan_same/article/details/52439546 文件上传是所有UI自动化测试都要面对的一个头疼问题,今天 ...
- web自动化之selenium(三)文件上传
1.上传标签为input #若上传文件的标签为<input>可以直接定位标签,然后send_keys(文件路径)可以直接上传 2.利用第三方软件Autoit上传 1.下载Autoit:ht ...
- selenium 用autoIT上传下载文件
一.下载安装AutoIT 下载并安装AutoIT,下载链接:https://www.autoitscript.com/site/autoit/ AutoIT安装成功后,可以在开始菜单下看到AutoIT ...
- 利用xshell从windows上传文件到虚拟机
Xshell实现Windows上传文件到Linux主机 经常有这样的需求,我们在Windows下载的软件包,如何上传到远程Linux主机上?还有如何从Linux主机下载软件包到Windows下:之前我 ...
- Xshell实现Windows上传文件到Linux主机
我是怎么操作的: 1.打开一台本地Linux虚拟机,使用mount 挂载Windows的共享文件夹到Linux上,然后拷贝数据到Linux虚拟机里面:(经常第一步都不顺利,无法挂载Windows的文件 ...
随机推荐
- Web前端新人笔记之CSS值和单位
数字 颜色——命名颜色 在Css2.1中规范定义了17个颜色名.包括html4.0中定义的16个颜色及外加一个橙色: <h1 style="color=aqua">aq ...
- 将ecshop中的session机制重写,从DB移植到Memcache中去
<?php if (!defined('IN_ECS')) { die('Hacking attempt'); } /*------------------------------------- ...
- dota 路人水平鉴定器
测试的dota水平...目的是学习一下tornado框架 #coding:utf8 import tornado.web,tornado.httpserver,tornado.ioloop,torna ...
- 使用ajaxFileUpload实现异步上传图片
index.html <head runat="server"> <title></title> <script src="jq ...
- mirantis fuel 学习
这些天看了mirantis中puppet的使用,对puppet的认识有了更深入的理解.mirantis公司的fuel主要是为了方便部署生产环境的openstack的工具.主要是在集群中自动化的安装op ...
- OFBiz之SVN下载地址
trunk: $ svn co http://svn.apache.org/repos/asf/ofbiz/trunk ofbiz release13.07: $ svn co http://svn. ...
- mysql UNIX时间戳与日期的相互转换 查询表信息
UNIX时间戳转换为日期用函数FROM_UNIXTIME() select FROM_UNIXTIME(1156219870); 日期转换为UNIX时间戳用函数UNIX_TIMESTAMP() Sel ...
- 如何在 Java 中正确使用 wait, notify 和 notifyAll – 以生产者消费者模型为例
wait, notify 和 notifyAll,这些在多线程中被经常用到的保留关键字,在实际开发的时候很多时候却并没有被大家重视.本文对这些关键字的使用进行了描述. 在 Java 中可以用 wait ...
- js: get event handler bound to the element
jQuery._data(jQuery(this)[0], "events" ).click[0].handler $._data( $("#myabc")[0 ...
- 敏捷开发概述与路线(转自MBAlib)
敏捷开发的概述 简单的说,敏捷开发是一种以人为核心.迭代.循序渐进的开发方法.在敏捷开发中,软件项目的构建被切分成多个子项目,各个子项目的成果都经过测试,具备集成和可运行的特征.换言之,就是把一个大项 ...