1

我已将 Jenkins 设置为定期运行 iphone UI 自动化测试。

运行自动化的第一个测试脚本时,出于安全原因,OS X 会提示输入用户名和密码。

所以我制作了一个 perl 脚本,它从 Expect 生成命令并发送用户名和密码。

由于某种原因,发送了用户名,但没有发送密码。

密码最终会被发送,但在我的命令超时之后。

下面的代码:

my $cmdString = "instruments -t $traceTemplatePath $AppFolder -e UIASCRIPT $escapedTest " .
    "-e UIARESULTSPATH Logs";
if ($isFirst == 1) {

    $isFirst = 0;

    $password = `cat /Users/\$USER/.password`;

    # Actually spawn the command from Expect.
    my $exp = Expect->spawn($cmdString) 
        or die "Failed to spawn command in Expect: $! \n";
    #change delay if necessary
    $exp->expect(30, [qr/Name .*/]);
    $exp->send("\n");

    $exp->expect(undef, [qr/Password/]);
    $exp->send("$password\n");
}

我想要做的是在我的命令超时之前发送密码,以便它运行测试脚本。

4

1 回答 1

0

尝试组合查询并将 exp_continue 用作:

$exp->expect($timeout,
             [ qr/username: /i, sub { my $self = shift;
                                      $self->send("$username\n");
                                      exp_continue; }],
             [ qr/password: /i, sub { my $self = shift;
                                      $self->send("$password\n");
                                      exp_continue; }],
             $shell_prompt);
于 2012-11-23T01:44:54.457 回答