zoukankan      html  css  js  c++  java
  • 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", 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(@"binDebug", "") + "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();
  • 相关阅读:
    VGA 2012
    WeaponFiringMode:我只要路径,接口,优化Weapon和AttackInterface
    Creep敌人,也可能是BOSS的性格特征吧~
    WeaponProjectileFireMode:拯救Projectile而来
    快步加鞭的感觉
    原型化的相机,方便实时调节
    巡逻的机器人
    Interface 让敌人不仅仅能识别一方
    UI界面:深入最后一次
    Delegate 让你的函数更专向
  • 原文地址:https://www.cnblogs.com/cloud-test/p/3465110.html
Copyright © 2011-2022 走看看