初级使用者 2020-03-30 16:06 采纳率: 0%
浏览 210

selenium与sikuli结合

多个Test:在使用selenium测试一个登陆界面(longinTest)后,使用sikuli查找主页面中的截图并点击该按钮(BiduiRenwuTest),总是提示找不到图片"(FindFailed--E:\workspace\study\ImageIdentifyAutoTest\image\Face\shouye\1585552676831.png")。(两个Test是按照先后顺序执行的)
解决方案:将BiduiRenwuTest中的代码合并到第一个Test执行,就没有错误了,求助,为什么???

@Test
    public void loginTest() throws InterruptedException, FindFailed {
        driver.get(baseUrl + "/");
        driver.findElement(By.xpath("//*[@id=\"app\"]/div/div[1]/div/ul/li[1]/input")).sendKeys("sa");
        driver.findElement(By.xpath("//*[@id=\"app\"]/div/div[1]/div/ul/li[2]/input")).sendKeys("1");
        driver.findElement(By.xpath("//*[@id=\"app\"]/div/div[1]/div/ul/li[3]/input")).click();
        Thread.sleep(3000);
    }

   @Test
    public void BiduiRenwuTest() throws FindFailed {
        //保证页面在前端
        Screen screen = new Screen();
        Pattern biduirenwu = new Pattern("E:\\workspace\\study\\ImageIdentifyAutoTest\\image\\Face\\shouye\\1585552676831.png");
        screen.wait(biduirenwu,5);
        screen.click(biduirenwu);
        System.out.println("insert biduirenwu ok!");
    }

  • 写回答

1条回答 默认 最新

  • 码农阿豪@新空间 优质创作者: Java、后端开发技术领域 2024-07-25 16:39
    关注
    让阿豪来帮你解答,本回答参考chatgpt3.5编写提供,如果还有疑问可以评论或留言
    问题分析: 在执行第二个Test(BiduiRenwuTest)时,提示找不到图片"1585552676831.png"。但在将第二个Test中的代码合并到第一个Test(loginTest)执行后,就没有错误了。为什么会出现这种情况呢? 解决方案分析: 在使用Sikuli进行图像识别时,需要屏幕处于前台以便正确找到目标图片。在第二个Test中,屏幕可能没有处于前台,导致无法正确找到图片。 解决方案: 将第二个Test中的代码合并到第一个Test执行,可以通过在第一个Test中执行图像识别操作,确保屏幕处于前台。这样可以避免找不到图片的错误。 示例代码:合并两个Test的代码如下所示:
    @Test    
    public void loginAndBiduiRenwuTest() throws InterruptedException, FindFailed {        
        driver.get(baseUrl + "/");        
        driver.findElement(By.xpath("//*[@id=\"app\"]/div/div[1]/div/ul/li[1]/input")).sendKeys("sa");        
        driver.findElement(By.xpath("//*[@id=\"app\"]/div/div[1]/div/ul/li[2]/input")).sendKeys("1");        
        driver.findElement(By.xpath("//*[@id=\"app\"]/div/div[1]/div/ul/li[3]/input")).click();        
        Thread.sleep(3000);        
        // 在登录后执行图像识别        
        Screen screen = new Screen();        
        Pattern biduirenwu = new Pattern("E:\\workspace\\study\\ImageIdentifyAutoTest\\image\\Face\\shouye\\1585552676831.png");        
        screen.wait(biduirenwu, 5);        
        screen.click(biduirenwu);        
        System.out.println("insert biduirenwu ok!");    
    }
    

    通过将两个Test合并成一个,确保在登录后立即执行图像识别操作,可以解决找不到图片的问题。

    评论

报告相同问题?