您的位置:首页 > 其它

SELENIUM 处理WINDOWS 上传 窗口

2014-03-06 13:00 387 查看
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();
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: