selenium使用autoit3處理windows控件


selenium本身無法處理windows控件,需要借助autoit
autoit3的語法很簡單,如處理上傳文件的windows對話框

   ControlFocus("請選擇上傳文件", "","Edit1")
    ControlSetText("請選擇上傳文件", "", "Edit1", "d:\upload.txt")
    Sleep(2000)
    ControlClick("請選擇上傳文件", "","Button1");
這些方法語法基本都類似:
第一個參數:title/hwnd/class
ControlClick($hWnd, "", "Edit1")
ControlClick("title", "", "Edit1")
ControlClick("[CLASS:#32770]", "", "Edit1")

controlid :id text,class,classnn,name,instance
如:button1 ;[ID:1003];1003(id),"[CLASSNN:Edit1]", "保存(&s)",[class:button;instance:1],"[NAME:textBoxFolder]",


例如:上面的語句還可以這樣寫
ControlFocus("[CLASS:#32770]", "","Edit1")
$hwnd=winwait("[CLASS:#32770]","",5)
ControlSetText($hwnd, "", "edit1", $filename)
Sleep(2000)
ControlClick("[CLASS:#32770]", "", "保存(&s)")

如果需要傳遞參數,則需要封裝函數,autoit的參數形式為:$CmdLine[0]為參數個數,$CmdLine[1]表示第一個參數,以此類推,如多個參數,調用時,中間用空格分割,如upload.exe param1 param2
saveas($CmdLine[1])
Func saveas($filename)
    winactve("[CLASS:#32770]")
    ControlFocus("請選擇上傳文件", "","Edit1")
    ControlSetText("請選擇上傳文件", "", "Edit1", $filename)
    Sleep(2000)
    ControlClick("請選擇上傳文件", "","Button1");
  EndFunc
轉換成exe文件,就可以直接調用

java調用:
public static void savefile(String filepath){
  String command = "e:\\upload.exe"+" "+filepath;
  try {
   Runtime.getRuntime().exec(command);
  } catch (IOException e) {
   
   e.printStackTrace();
  }
 }

當然QTP也可以調用:
createobject("wscript.shell").run "d:\upload.exe"


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM