SELENIUM 处理WINDOWS 上传 窗口

27 篇文章 0 订阅
9 篇文章 0 订阅

selenium无法控制windows窗口,故需要引用第三方工具autoit.

 

 

对于下图窗口,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();
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值