ICode9

精准搜索请尝试: 精确搜索
首页 > 系统相关> 文章详细

SELENIUM 处理WINDOWS 上传 窗口

2020-02-05 16:56:21  阅读:246  来源: 互联网

标签:widowTitle 窗口 WINDOWS SELENIUM Upload File Autoit 上传


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", 1);          //暂停执行脚本,直到上传对话框出现
            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", 1);          //暂停执行脚本,直到上传对话框出现
            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='12'

显示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();

 

标签:widowTitle,窗口,WINDOWS,SELENIUM,Upload,File,Autoit,上传
来源: https://www.cnblogs.com/peachh/p/12264414.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有