Selenium webdriver 使用Sikuli with webdriver在上载文档脚本中找不到图像路径

Selenium webdriver 使用Sikuli with webdriver在上载文档脚本中找不到图像路径,selenium-webdriver,sikuli-script,Selenium Webdriver,Sikuli Script,使用Sikuli with selenium web驱动程序在上载文档脚本中找不到图像路径,我使用的是最新的Sikuli jar。运行以下代码段时,我遇到以下错误: Screen src = new Screen(); Match addFile= src.find("C:\\Users\\Inknopwledge\\Desktop\\TestSikuli\\Capture.PNG"); FindFailed: can not find C:\Users\Inknopwledge\Deskt

使用Sikuli with selenium web驱动程序在上载文档脚本中找不到图像路径,我使用的是最新的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
“根据您的声明,例外情况是: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秒,图像才会显示在屏幕上。更改您的相似性百分比以获得匹配。您的图像可能与应用程序上显示的图像不同。

当将此与Appium驱动程序一起使用时,我遇到了相同的问题。我意识到我使用mac截取的图像不是Sikuli可以找到的图像。有那么:

  • 下载并安装Sikuli IDE,并将其用于快照
  • 使用以下代码:

    导入org.sikuli.script.FindFailed

    导入org.sikuli.script.Screen

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

    屏幕=新屏幕()

    screen.userCapture().save(路径)

    }


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

    谢谢Umesh,我尝试了上面的代码段。但是得到了[error]无法创建OS Util:org.sikuli.script.Win32Util在Screen s=new Screen()行出现错误;请查看链接:这是错误并出现在某些计算机中。请尝试使用| Region对象而不是Screen对象。例如:Region r=new Region(..);r.exists….Thnx我正在使用以下代码使用sikuli输入文件位置,但是是否有任何方法可以根据不同的系统指定动态位置..if(src.exists(fileName,10)!=null){system.out.println(“文件名模式存在”);Match Match=src.getLastMatch();Match.find(文件名);match.click(文件名);match.type(文件名,“Z:\\mentis_test_v2\\Sikuli\\20150429 NSFBio Gray.docx”);match.setAutoWaitTimeout(50);}