模态窗口用webdriver定位不到,可用java+sikuli实现

时间:2023-03-08 19:31:38
模态窗口用webdriver定位不到,可用java+sikuli实现

一、安装sikuli(参见:http://lijunwei1228ok.blog.163.com/blog/static/97383797201311279595821/)

1.官网:http://www.sikuli.org/download.html下载模态窗口用webdriver定位不到,可用java+sikuli实现

模态窗口用webdriver定位不到,可用java+sikuli实现

2.在本地双击sikuli-setup.jar,然后再同一个目录中会出现模态窗口用webdriver定位不到,可用java+sikuli实现

3.安装完成后,在同一个目录下会生成如下文件

目录:F:\selenium\workspace\sikuli

模态窗口用webdriver定位不到,可用java+sikuli实现

4.双击runIDE.cmd可以运行sikuli的客户端。界面如下,

启动中:

模态窗口用webdriver定位不到,可用java+sikuli实现

启动后:

模态窗口用webdriver定位不到,可用java+sikuli实现

5.开始录制模态窗品控件

模态窗口用webdriver定位不到,可用java+sikuli实现

模态窗口用webdriver定位不到,可用java+sikuli实现

6.录制后保存文件为*.sikuli--(mtck.sikuli)

7.再导出文件*.skl--(mtck.skl)

模态窗口用webdriver定位不到,可用java+sikuli实现

8.准备好给java调用的文件如下:

目录:F:\selenium\workspace\sikuli\mtck

模态窗口用webdriver定位不到,可用java+sikuli实现

双击运行mtckcl.bat,只要能回放正常,在JAVA中调用就肯定没问题。

其中mtckcl.bat 的内容如下:

@echo off

:::::::::::::::::::::::::::
REM  调用Sikuli,点击模态窗口里面元素

::::::::::::::::::::::::::
set fjscriptHome=F:\selenium\workspace\sikuli\mtck
set SikuliHome=F:\selenium\workspace\sikuli
cd /d %fjscriptHome%
"%SikuliHome%"\runIDE.cmd -r "mtck.skl"

模态窗口用webdriver定位不到,可用java+sikuli实现

二、在eclipse中调用bat文件即可

模态窗口用webdriver定位不到,可用java+sikuli实现

pm.click(By.id("BtnSwfFileUp"));     //上传附件
                      try {Thread.sleep(2000); } catch (InterruptedException e) { e.printStackTrace(); }
                      
                      try{
                      Runtime.getRuntime().exec("F:\\selenium\\workspace\\sikuli\\mtck\\mtckcl.bat");
                      }catch (IOException e1){e1.printStackTrace();   System.out.println("fffffffff");}
                      //这里有个问题要注意,java调完用sikuli就会马上执行下面的代码,而这时sikuli都还没有执行完呢,所以只好先用sleep等待sikuli执行完,再执行下面的代码了
                      try {Thread.sleep(39000); } catch (InterruptedException e) { e.printStackTrace(); }
                      pm.sendKeys(By.id("txtTitle"), "公告发布111");    //输入标题

driver.findElement(By.id("btSubmit")).click();   //这里还有奇怪的问题等待后不会执行该句点击操作也不会错,而把输入标题放在这句上行后,就会执行这两句了。