2

我是 CasperJS 和 coffeescript 的新手。我的 CasperJS 咖啡脚本测试中有一个非常简单的部分来登录网站,该部分在最近更改登录表单的密码元素之前可以正常工作。不幸的是,我不记得原始表单,但这是当前登录表单的外观:

<div id="login-body">
  <img src="/assets/images/logo.png" class="logo" alt="Test Acme Wil-e-Coyote Company">    
  <form action="/Login/login/" method="post">
    <h2>Please log in to catch the roadrunner:</h2>
    <div class="form-row">
      <label for="login-username">Username:</label>
      <input type="text" id="login-username" class="text placeholder" 
      data-placeholder="first.last" placeholder="first.last" name="username
      value>
    </div>
    <div class="form-row form-password">
      <label for="login-password-placeholder">Password:</label>
      <input type="text" id="login-password-placeholder" class="text password-placeholder 
      placeholder" name="password" data-placeholder="Password is case sensitive"
      placeholder="Password is case sensitive">
      <input type="password" id="login-password" class="text password-text placeholder"
      name="password" placeholder="Password is case sensitive" style="opacity: 0;
      position: fixed; display: none;">
    </div>
    <div class="form-row">
      <p class="switch"><a href="/Login/recover" 
      data-switch="forgot">Having trouble logging in? »</a></p>
      <input type="submit" id="login-submit" class="submit" value="Log In">
    </div>
  </form>

我尝试用于登录的咖啡脚本的变体如下:

1. 这个以前工作正常

casper.start appUrl('http://acmewilecoyote/Login/login'), ->
  @fill 'div#login-body > form'
      username: 'MyName'
      password: 'MyPassword'
    , true
  @wait 4000

2.

casper.start appUrl('http://acmewilecoyote/Login/login'), ->
  @fill 'div#login-body'
      username: 'MyName'
      password: 'MyPassword'
    , true
  @wait 4000

3. 此页面上没有其他表单 - 这已与不同站点上的登录表单一起使用

casper.start appUrl('http://acmewilecoyote/Login/login'), ->
  @fill 'form'
      username: 'MyName'
      password: 'MyPassword'
    , true
  @wait 4000

4.

casper.start appUrl('http://acmewilecoyote/Login/login'), ->
  @fill 'form#login-body'
      username: 'MyName'
      password: 'MyPassword'
    , true
  @wait 4000

调试输出没有提供任何有用的东西,所以我在脚本中添加了一些屏幕截图,从它们的外观来看,它似乎试图提交密码字段留空的表单。任何帮助将非常感激。

4

1 回答 1

4

如果您愿意使用GitHub 页面上 master 分支中最新版本的 CasperJS ,那么您将能够使用Casper#fillSelectors而不仅仅是Casper#fill.

然后,您将脚本更改为如下所示。

casper.start appUrl('http://acmewilecoyote/Login/login'), ->
  @fillSelectors 'form#login-body'
      '#login-username': 'MyName'
      '#login-password': 'MyPassword'
    , true
  @wait 4000

如果没有 master 分支,您目前没有访问密码输入字段所需的 API,因为它是具有名称的第二个元素password

于 2013-05-15T18:19:32.103 回答