如何使用Watir访问模式弹出窗口

时间:2013-09-17 07:33:08

标签: html popup modal-dialog watir

我是Watir的新手,这是我的第一个任务。我已经完成了一系列的自动化,但是我不得不点击模式弹出窗口上的文件上传按钮。所以基本上我点击了一个html链接,上面写着恢复

<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>

感谢。

3 个答案:

答案 0 :(得分:2)

这样的事情应该有效

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

答案 1 :(得分:0)

这对于watir和watir-webdriver是不同的 使用watir,您可以通过

访问模式对话框

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的评论应该可以解决问题。

答案 2 :(得分: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/

找到有关“提醒”方法的信息