1

Sikeni-Script.jar를 사용하여 Selenium WebDriver (TestNG 프레임 워크 사용) 이미지 링크를 클릭합니다. 내 코드를 TestNGSuite로 실행하거나 Ant를 사용하여 (명령 프롬프트에서) 실행하면 동일하게 작동합니다. 다음은 내 코드입니다 : -젠킨스가 FindFailed를 throw합니다 : 예외 Sikuli

WebDriver driver=new FirefoxDriver(); 
driver.get("http://google.com"); 
driver.manage().window().setSize(new Dimension(1366, 768));  
driver.manage().timeouts().implicitlyWait(20, TimeUnit.SECONDS); 
System.out.println("Title is " +driver.getTitle()); 
System.out.println("Browser opened"); 
try { 


Screen s=new Screen(); 
Pattern image=new Pattern("D:\\LoyalityFiles\\gmail\\1476714460371.png"); 

s.find(image); 
s.click(image); 
System.out.println("clicked on gmail"); 
System.out.println("Title of this page is " +driver.getTitle()+" and url is " +driver.getCurrentUrl()); 

driver.quit(); 
} catch (Exception e) { 
    e.printStackTrace(); 
} 

} 

문제 : - 젠킨스를 통해이 코드를 실행하는 동안 예외 : -

FindFailed: can not find P(D:\LoyalityFiles\gmail\1476714460371.png) S: 0.7 on the screen. 
    [testng] Line 1574, in file Region.java 
    [testng] 
    [testng]  at org.sikuli.script.Region.handleFindFailed(Region.java:1574) 
    [testng]  at org.sikuli.script.Region.wait(Region.java:1682) 
    [testng]  at org.sikuli.script.Region.find(Region.java:1590) 
    [testng]  at sikuli.ImageC.Google(ImageC.java:33) 
    [testng]  at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    [testng]  at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) 
    [testng]  at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
    [testng]  at java.lang.reflect.Method.invoke(Method.java:606) 
    [testng]  at org.testng.internal.MethodInvocationHelper.invokeMethod(MethodInvocationHelper.java:85) 
    [testng]  at org.testng.internal.Invoker.invokeMethod(Invoker.java:639) 
    [testng]  at org.testng.internal.Invoker.invokeTestMethod(Invoker.java:816) 
    [testng]  at org.testng.internal.Invoker.invokeTestMethods(Invoker.java:1124) 
    [testng]  at org.testng.internal.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:125) 
    [testng]  at org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:108) 
    [testng]  at org.testng.TestRunner.privateRun(TestRunner.java:774) 
    [testng]  at org.testng.TestRunner.run(TestRunner.java:624) 
    [testng]  at org.testng.SuiteRunner.runTest(SuiteRunner.java:359) 
    [testng]  at org.testng.SuiteRunner.runSequentially(SuiteRunner.java:354) 
    [testng]  at org.testng.SuiteRunner.privateRun(SuiteRunner.java:312) 
    [testng]  at org.testng.SuiteRunner.run(SuiteRunner.java:261) 
    [testng]  at org.testng.SuiteRunnerWorker.runSuite(SuiteRunnerWorker.java:52) 
    [testng]  at org.testng.SuiteRunnerWorker.run(SuiteRunnerWorker.java:86) 
    [testng]  at org.testng.TestNG.runSuitesSequentially(TestNG.java:1215) 
    [testng]  at org.testng.TestNG.runSuitesLocally(TestNG.java:1140) 
    [testng]  at org.testng.TestNG.run(TestNG.java:1048) 
    [testng]  at org.testng.TestNG.privateMain(TestNG.java:1355) 
    [testng]  at org.testng.TestNG.main(TestNG.java:1324) 

주의 사항 : - 내가 Windows 서비스로 젠킨스를 실행하고 있습니다. pls 제안!

+0

테스트를 어디에서 실행합니까? 젠킨스와 같은 기계인가요? 그 기계에는 어떤 일이 벌어지는지를 볼 수있는 물리적 인 스크린이 부착되어 있습니까? –

+0

내 코드가있는 로컬 컴퓨터에서 젠킨스를 실행하고 있습니다. 나는 젠킨스와 코드가 같은 머신에 있고 윈도우 서비스로 jenikns를 실행 중임을 의미합니다. –

+0

젠킨스를 서비스로 실행하는 것이 여기에서 문제가 될 수 있습니다. Jenkins를 담당하는 Java 프로세스를 찾아서 종료합니다. 그런 다음 커맨드 라인이나 다른 것으로부터 Jenkins를 수동으로 다시 시작하십시오. 그런 다음 다시 시도하십시오. –

답변

0

SikuliX는 3 초 (기본값, Settings.AutoWaitTimeout) 동안 화면에서 패턴을 찾지 못하며 FindFailed 예외를 던집니다. Settings.AutoWaitTimeout을 키우거나 자신의 스마트 웨이터를 구현하십시오 screen.find()

+0

: - 코드를 작성할 수 있습니까? screen.find() 대신에 사용해야합니다. –

관련 문제