如何使用 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>

谢谢。

这样的东西应该有效

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

这对于 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

使用Web驱动程序P0deje的评论应该可以解决问题。

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

订购我的测试以操纵弹出模式,我必须更改

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/找到有关"警报"方法的信息

最新更新