1

I am using sikuli-script.jar to click on images link with Selenium WebDriver (With TestNG framework). The same is working fine when i run my code Run as TestNGSuite or with ant run (from the command prompt). Below is my code:-

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();
}

}

issue:- While running this code via jenkins it throws :-

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)

please note:- i am running jenkins as windows service. pls suggest!!

Suresh Sharma
  • 186
  • 1
  • 5
  • 23
  • Where is your test running? Is that the same machine where Jenkins is? Does that machine has a physical screen attached to it where you can see what's happening? – Eugene S Oct 19 '16 at 00:50
  • I am running my jenkins on my local machine where my code hosts. i meant both jenkins and code are on the same machine and i am running jenikns as windows service. – Suresh Sharma Oct 19 '16 at 06:43
  • Running Jenkins as a service might be your issue here. Find the Java process responsible for Jenkins and kill it. Then manually start Jenkins again from command line or something. Then try again. – Eugene S Oct 19 '16 at 06:49

1 Answers1

0

SikuliX cannot find your pattern on the Screen during 3 seconds (default value, Settings.AutoWaitTimeout) and throws FindFailed exception. Try to raise Settings.AutoWaitTimeout or implement own smart waiter instead of screen.find()

vabada
  • 1,738
  • 4
  • 29
  • 37
Denyss
  • 1