使用带有webdriver的Sikuli在上传文档脚本中找不到图像路径

时间:2015-07-07 11:31:07

标签: selenium-webdriver sikuli-script

使用带有selenium web驱动程序的Sikuli在上传文档脚本中找不到图像路径,我正在使用最新的Sikuli jar。运行后面的代码片段时出现以下错误:

Screen src = new Screen();
Match addFile= src.find("C:\\Users\\Inknopwledge\\Desktop\\TestSikuli\\Capture.PNG");


FindFailed: can not find C:\Users\Inknopwledge\Desktop\Sikuli\Capture.PNG on the screen.
Line ?, in File ?
    at org.sikuli.script.Region.handleFindFailed(Region.java:420)
    at org.sikuli.script.Region.wait(Region.java:511)
    at org.sikuli.script.Region.find(Region.java:381)
    at pagefactory.profile_section.ResearchandExp_pageFact.click_Attach_Documents(ResearchandExp_pageFact.java:195)
    at TestCase.ResearchandExpertise_TC.attach_Document_to_Research(ResearchandExpertise_TC.java:311)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    at java.lang.reflect.Method.invoke(Unknown Source)
    at org.testng.internal.MethodInvocationHelper.invokeMethod(MethodInvocationHelper.java:84)
    at org.testng.internal.Invoker.invokeMethod(Invoker.java:714)
    at org.testng.internal.Invoker.invokeTestMethod(Invoker.java:901)
    at org.testng.internal.Invoker.invokeTestMethods(Invoker.java:1231)
    at org.testng.internal.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:127)
    at org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:111)
    at org.testng.TestRunner.privateRun(TestRunner.java:767)
    at org.testng.TestRunner.run(TestRunner.java:617)
    at org.testng.SuiteRunner.runTest(SuiteRunner.java:334)
    at org.testng.SuiteRunner.runSequentially(SuiteRunner.java:329)
    at org.testng.SuiteRunner.privateRun(SuiteRunner.java:291)
    at org.testng.SuiteRunner.run(SuiteRunner.java:240)
    at org.testng.SuiteRunnerWorker.runSuite(SuiteRunnerWorker.java:52)
    at org.testng.SuiteRunnerWorker.run(SuiteRunnerWorker.java:86)
    at org.testng.TestNG.runSuitesSequentially(TestNG.java:1224)
    at org.testng.TestNG.runSuitesLocally(TestNG.java:1149)
    at org.testng.TestNG.run(TestNG.java:1057)
    at org.testng.remote.RemoteTestNG.run(RemoteTestNG.java:111)
    at org.testng.remote.RemoteTestNG.initAndRun(RemoteTestNG.java:204)
    at org.testng.remote.RemoteTestNG.main(RemoteTestNG.java:175)
Unable to upload document [Ljava.lang.StackTraceElement;@17c395e

2 个答案:

答案 0 :(得分:0)

  

"根据你的陈述Exception是:FindFailed:在屏幕上找不到C:\ Users \ Inknopwledge \ Desktop \ Sikuli \ Capture.PNG。

当在3秒内未在屏幕上找到给定路径的图像(sikuli中的查找操作的默认自动等待超时为3秒)时,会发生此异常,默认情况下为0.7

您可以等待加载图像然后使用find命令或使用:

Screen s = new Screen();
Pattern p = new Pattern ("img path/path").similar( (float) 0.7);
if (s.exists(p , 7) != null) {
Match match = s.getLastMatch();
}

以上命令等待7秒钟,图像出现在屏幕上。更改相似度百分比以获得匹配。您的图像可能是应用程序上显示的不同形式。

答案 1 :(得分:0)

与Appium Driver一起使用时遇到了同样的问题。我意识到我使用我的mac拍摄的图像不是Sikuli可以找到的图像。那么有两种解决方案:

  1. 下载并安装Sikuli IDE并将其用于快照
  2. 使用以下代码:

    import org.sikuli.script.FindFailed;

    import org.sikuli.script.Screen;

    public void capture(String path){

    屏幕=新屏幕();

    screen.userCapture()保存(路径);

    }

  3. 这基本上会冻结屏幕并允许您剪切图像并将其存储在您提到的路径中。您可以使用IDE运行它或创建可执行jar文件以从命令行运行它