關於 LDTP 操縱 windows 控件。

LDTP doc: java

https://ldtp.freedesktop.org/user-doc/

對於 web 自動化,咱們用 Selenium, 可是對於 windows 控件,咱們能夠使用 LDTP。
python

 

 首先,須要引用的 jar 包。
web

 

CobraWinLDTP-3.0.0.msi (這個是須要安裝的,安裝到 C:\Program Files (x86)\VMware\CobraWinLDTP, 而核心的文件就是
CobraWinLDTP.exe。也就是它真正操做了 windows 控件。) 
commons-codec-1.6.jar
commons-logging-1.1.2.jar
LDTP.jar
ws-commons-util-1.0.2.jar
xmlrpc-client-3.1.3.jar
xmlrpc-common-3.1.3.jar
 

 

上面第一個是安裝 vmware 的 LDTP。 windows

Ldtp不須要安裝 python,也不須要安裝 jep,它只須要外部有 CobraWinLDTP.exe,並按照 client-server 的方式工做。ldtp.jar是client,先經過啓動進程的方式運行CobraWinLDTP.exe,而後經過xmlrpc協議,把java的命令變成調用CobraWinLDTP.exe的命令,從而能夠識別控件、操縱控件

 

(對,java調用pywinauto時,須要依賴jep這個橋樑來把java的命令變成python端的,jep就是負責傳遞命令的)
app

 

因爲 CobraWinLDTP.exe 是 server 端,因此先須要在命令行中啓動 CobraWinLDTP.exe。
命令行

 

而後看代碼:code

 

package ldtp;

import com.cobra.ldtp.Ldtp;

public class TestLdtp {
    public static void main(String[] args) {
        Ldtp ldtp = new Ldtp("abc");
        String[] wins = ldtp.getWindowList();
        for (String win : wins)
        {
            System.out.println(win);
        }
    }
}
====打印結果====

 

 

paneTaskbar
frmEclipse SDK
frm?????? - ??? - Mozilla Firefox
frmNew Tab
frmWeChat
frmD:\EclipseSpaceNew\LdtpTestNew\lib
frmC:\Program Files (x86)\VMware\CobraWinLDTP
frmAdministrator: Command Prompt - CobraWinLDTP.exe
frmUntitled - Paint
lst0
paneProgram Manager

 

上面代碼中的 "abc" 是隨便一個名字。這段代碼能夠打印出全部的 frame。而後你找到你須要的,就能夠繼續操做了。
orm

 

下面是打開 notepad 後一些操做的代碼

server

 

package ldtp;

import com.cobra.ldtp.Ldtp;

public class TestLdtp {
    public static void main(String[] args) {
        String winStr = "frmUntitled - Notepad"; //Open Notepad first please
        Ldtp ldtp = new Ldtp(winStr);
        String[] wins = ldtp.getWindowList(); //Print all windows
        for (String win : wins)
        {
            System.out.println(win);
        }
        ldtp.activateWindow(winStr);
        System.out.println("=================");
        String[] objects = ldtp.getObjectList(); //Print all objects
        for (String ob : objects)
        {
            System.out.println(ob);
        }
//        ldtp.click("mnuView"); //This can click the View menu
        ldtp.selectMenuItem("View;Status Bar"); //Click View > Status Bar
        ldtp.appendText("txtTextEditor", "hello allen");
    }
}

 

 

====打印結果====

 

 

paneTaskbar frmEclipse SDK frmUntitled - Notepad frm?????? - ??? - Mozilla Firefox frmNew Tab frmslc12dkq-16-2012-OBIEEServer - Remote Desktop Connection Manager v2.2 frmD:\sw\UIAVerify2.0_x86 frmNow Playing frmAdministrator: Command Prompt - CobraWinLDTP.exe frmD:\00???? pane1 pane2 paneChatContactMenu lst0 paneProgram Manager ================= txtTextEditor uknVertical btnLineup btnLinedown uknHorizontal btnColumnleft btnColumnright ukn2 ukn3 lbl0 lblLn1,Col1 ukn4 mnuSystem mnuSystem1 btnMinimize btnMaximize btnClose mnuApplication mnuFile mnuEdit mnuFormat mnuView mnuHelp
 
相關文章
相關標籤/搜索