1

我是 Watir 的新手,这是我的第一个任务。我已经完成了一系列自动化操作,但卡在了必须单击模式弹出窗口上的文件上传按钮的地方。所以基本上我点击一个html链接,上面写着restore

<a id="restore-link" class="open-modal" href="profiles/restore_form">
  Restore Profile
</a>

这工作并打开一个模式弹出窗口,其代码附在下面。我需要点击文件上传并设置路径,然后在模式窗口中点击恢复。有什么提示或建议吗?打开的模态窗口的代码如下所示。

<div class="ui-dialog-titlebar ui-widget-header ui-corner-all ui-helper-clearfix">
  <span id="ui-dialog-title-modal" class="ui-dialog-title">&nbsp;</span>
    <a role="button" class="ui-dialog-titlebar-close ui-corner-all" href="#">
      <span class="ui-icon ui-icon-closethick">close</span>
    </a>
</div>
<div scrollleft="0" scrolltop="0" style="width: auto; min-height: 50px; height: auto;" id="modal" class="ui-dialog-content ui-widget-content">
  <form id="restore-profile-form" action="profiles/restore" enctype="multipart/form-data" method="POST">
    <fieldset>
      <div class="form-head">
        <h2>Restore Profile</h2>
      </div>
      <div class="form-body">
        <div class="form-field">
          <label for="name">Backup <em class="mandatory">*</em></label>
          <input id="backup" name="backup" type="file">
        </div>
      </div>
      <div class="form-foot">
        <input value="Restore" id="restore-profile-submit" type="submit">
        <a href="#" onclick="return closeModalWindow()" id="restore-profile-cancel">Cancel</a>
      </div>
    </fieldset>
  </form>
</div>

谢谢。

4

3 回答 3

3

像这样的东西应该工作

browser.a(:id => 'restore-link').click
browser.window(:index => 1).use # switch to new modal window

browser.file_field(:id => 'backup').set file_path
browser.button(:id => 'restore-profile-submit').click
browser.window(:index => 0).use # switch back
于 2013-09-17T09:15:14.090 回答
0

我试图将此作为评论,但不能。

我命令我的测试来操纵弹出模式,我不得不改变

browser.a(:id => 'restore-link').click

browser.a(:id => 'restore-link').click_no_wait

然后我能够验证调用了正确的弹出模式

browser.alert.text.include?("Invalid URL")

并承认

browser.alert.ok

您可以在http://watirwebdriver.com/javascript-dialogs/找到有关“警报”方法的信息

于 2015-03-13T12:38:06.177 回答
0

这对于使用 watir 的 watir 和 watir-webdriver 是不同的,您可以通过以下方式访问模式对话框

modal = browser.modal_dialog

一旦你有了模态对话框,你就可以做任何你通常可以用浏览器做的事情

modal.file_field(:id => 'backup').set(file_path)
modal.button(:id => 'restore-profile-submit').click
或者
modal.link(:text => 'Cancel').click

使用 webdriver p0deje 的评论应该可以解决问题。

于 2013-09-17T14:22:59.930 回答