0

在使用带有 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
4

2 回答 2

0

“根据您的声明,例外情况是: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 秒以使图像出现在屏幕上。更改您的相似度百分比以获得匹配。您的图像可能与应用程序上显示的形式不同。

于 2015-07-23T14:06:52.667 回答
0

将它与 Appium Driver 结合使用时,我遇到了同样的问题。我意识到我用我的 mac 截取的图像不是 Sikuli 能找到的。那么有两个解决方案:

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

    导入 org.sikuli.script.FindFailed;

    导入 org.sikuli.script.Screen;

    公共无效捕获(字符串路径){

    屏幕屏幕 = 新屏幕();

    screen.userCapture().save(路径);

    }

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

于 2016-02-29T13:56:51.720 回答