← Back to team overview

sikuli-driver team mailing list archive

[Question #194353]: How to pass arguments to Sikuli script run without the IDE

 

New question #194353 on Sikuli:
https://answers.launchpad.net/sikuli/+question/194353

I have set up an automation framework that launches Sikuli scripts on multiple remote virtual machines in parallel, then collects the results.

Since the scripts are the same, they somehow need to know that they  are running under different scenarios (use different login credentials, etc.).  I would like to be able to pass command line parameters to Sikuli scripts.

Right now, there's a runner (essentially a webserver) that receives requests over HTTP with script names, launches them, collects their console output, and returns that in an XML format for the mothership to process and analyze.

Here's the command that the runner uses to launch scripts:

java -Xms64M -Xmx512M -Dfile.encoding=UTF-8 -jar "%SIKULI_HOME%\sikuli-script.jar" "[SCRIPT_DIR]\scriptName.sikuli"  2>&1

When I try to supply arguments to it using the --arg switch provided in the documentation, sikuli-script.jar seems to treat them as the names of sikuli scripts to run.   Here's an example.  The testArg.sikuli script simply prints out the content of sys.argv:

===============
File: testArg.sikuli
===============

import sys

print "I will print all values in argv\n"

for a in sys.argv:
    print a
===============

Then I launch it with this command:

java -Xms64M -Xmx512M -Dfile.encoding=UTF-8 -jar "%SIKULI_HOME%\sikuli-script.jar"--arg firstargument testArgv.sikuli"  2>&1

This is the console output I get:

===============
[error] Can't run this Sikuli script: --arg
java.lang.StringIndexOutOfBoundsException: String index out of range: -1
	at java.lang.String.substring(Unknown Source)
	at org.sikuli.script.ScriptRunner.getPyFrom(ScriptRunner.java:106)
	at org.sikuli.script.ScriptRunner.runPython(ScriptRunner.java:100)
	at org.sikuli.script.SikuliScript.main(SikuliScript.java:111)
[error] Can't run this Sikuli script: firstargument
java.lang.StringIndexOutOfBoundsException: String index out of range: -1
	at java.lang.String.substring(Unknown Source)
	at org.sikuli.script.ScriptRunner.getPyFrom(ScriptRunner.java:106)
	at org.sikuli.script.ScriptRunner.runPython(ScriptRunner.java:100)
	at org.sikuli.script.SikuliScript.main(SikuliScript.java:111)
[info] Sikuli vision engine loaded.
[info] Windows utilities loaded.
[info] VDictProxy loaded.
I will print all values in argv

.	estArgv.sikuli
--arg
firstargument
.\testArgv.sikuli
===============

It seems like the testArgv.sikuli script does get a hold of command line parameters in sys.argv, but the jar archive still treats them as sikuli script names.

Any ideas on how to tackle this?  Thanks!

-- 
You received this question notification because you are a member of
Sikuli Drivers, which is an answer contact for Sikuli.