Re: utter newbie expect question



On May 29, 5:30 pm, Mark Janssen <mpc.jans...@xxxxxxxxx> wrote:
On May 29, 11:03 pm, Artis Gripemore <wealthe...@xxxxxxxxx> wrote:





It would appear to be working now. I did change all the sends to
exp_sends, but then the script would not run at all, but that helped
me debug a bit. The problem seemed to be that I had it in
conservative mode. Does that make sense?

So now I have exp_sends, conservative mode off, and a load of sleeps
inserted, and it seems to work in limited testing.

Thanks again; I was completely lost!

On May 29, 4:17 pm, Mark Janssen <mpc.jans...@xxxxxxxxx> wrote:

On May 29, 9:44 pm, Artis Gripemore <wealthe...@xxxxxxxxx> wrote:

This is the error message I get. I don't see the typo, but I assume
that it is there. Any ideas? Thanks again.

wrong # args: should be "send ignore arg"
while executing
"send " " "
invoked from within
"expect -nobrace {<SPACE> to continue} {send " " ; exp_continue}
{Choose one (X,Y,Z} {send -- "y"}"
invoked from within
"expect {
"<SPACE> to continue" {send " " ; exp_continue}
"Choose one (X,Y,Z" {send -- "y"}

}"

On May 29, 2:51 pm, Mark Janssen <mpc.jans...@xxxxxxxxx> wrote:

On May 29, 8:40 pm, Artis Gripemore <wealthe...@xxxxxxxxx> wrote:

Thanks very much! I suppose if I put a ;return after the send -- "y"
that I could break out of this, if I had more script to run after the
match on X, Y, Z?

"(X, Y, Z" {send -- "y" ;return}

Otherwise, it would continue with the next expect statement anyway,
once it timed out, correct?

No, by default the expect command will normally return after a match,
a timeout or a eof has occured. It's the exp_continue in the other
case that will keep on running the expect command so a return is not
necessary. See alsohttp://www.tcl.tk/man/expect5.31/expect.1.html

Mark

It might be that you are having a name collistion with the standard Tk
command send (I cannot test as I am on windows). To prevent the
collision use exp_send instead (which is a good habit to get into
anyway). If that doesn't work, try exp_send -- " ".
Additionally, what is your Expect and Tcl version?

result of: info patchlevel
and of: package require Expect

Or are you using the expect binary to run the script?
Then what does expect -v say?

Mark- Hide quoted text -

- Show quoted text -

Are you using autoexpect by any chance? In that case conservative mode
makes sense.

Mark- Hide quoted text -

- Show quoted text -


Yes, I did use autoexpect -p to build the original script. Lots of
editing. Next time, by hand.

The script outruns the application at one point, so I have simulated
the delay by inserting sleeps.
I know that there is some kind of "human typing" option, but I haven't
looked into it yet. I'm just happy that the major stumbling blocks
are overcome.

One thing that looks interesting to try next -- have the script read
the menu it has accessed, to ensure the correctness of the next
exp_send. If the correct choice off a given menu, say foo, is 16 most
of the time, but can be 17 some of the time, it would be cool to read
in from the buffer and then use the number associated with foo in the
corresponding exp_send.

I gotta get that book.

.



Relevant Pages