使用PhpUnit(PHPUnit_Extensions_SeleniumTestCase)单击Selenium的Jquery Dialog UI按钮

时间:2014-10-15 09:33:53

标签: jquery jquery-ui selenium phpunit

我正在使用jquery Dialog UI开发应用程序。

我们有一个具有此行为的屏幕:如果匹配了不同规则,则在单击表单提交按钮后会链接一个或多个Jquery UI对话框。

使用Phpunit SeleniumTestCase(参见扩展名PHPUnit_Extensions_SeleniumTestCase)和Selenium RC我试图点击那些对话框的按钮来模拟测试。

不幸的是它不起作用,我不能使用XPath,因为对话框的数量不同,每个的Xpath将不同(匹配显示规则)。所以我决定在按钮上设置ID,例如我们正在使用的典型UI对话框:

<div class="ui-dialog ui-widget ui-widget-content ui-corner-all ui-front ui-dialog-buttons ui-draggable ui-resizable" style="position: absolute; height: auto; width: 300px; top: 343px; left: 487px; display: block;" tabindex="-1" role="dialog" aria-describedby="ui-id-10" aria-labelledby="ui-id-11">
   <div class="ui-dialog-titlebar ui-widget-header ui-corner-all ui-helper-clearfix">
      <span id="ui-id-11" class="ui-dialog-title">Attention</span>
      <button class="ui-button ui-widget ui-state-default ui-corner-all ui-button-icon-only ui-dialog-titlebar-close" role="button" aria-disabled="false" title="close">
         <span class="ui-button-icon-primary ui-icon ui-icon-closethick"/>
         <span class="ui-button-text">close</span>
      </button>
   </div>
   <div id="ui-id-10" style="display: block; width: auto; min-height: 88px; max-height: none; height: auto;" class="ui-dialog-content ui-widget-content">Le champ n° de secours n'a pas été renseigné; acceptez-vous qu'il soit affecté par défaut avec la valeur du ND cible?</div>
   <div class="ui-dialog-buttonpane ui-widget-content ui-helper-clearfix">
      <div class="ui-dialog-buttonset">
         <button type="button" id="popup_numero_secours_yes" class="ui-button ui-widget ui-state-default ui-corner-all ui-button-text-only" role="button" aria-disabled="false">
            <span class="ui-button-text">Oui</span>
         </button>
         <button type="button" id="popup_numero_secours_no" class="ui-button ui-widget ui-state-default ui-corner-all ui-button-text-only" role="button" aria-disabled="false">
            <span class="ui-button-text">Non</span>
         </button>
         <button type="button" id="popup_numero_secours_cancel" class="ui-button ui-widget ui-state-default ui-corner-all ui-button-text-only" role="button" aria-disabled="false">
            <span class="ui-button-text">Annuler</span>
         </button>
      </div>
   </div>
   <div class="ui-resizable-handle ui-resizable-n" style="z-index: 90;"/>
   <div class="ui-resizable-handle ui-resizable-e" style="z-index: 90;"/>
   <div class="ui-resizable-handle ui-resizable-s" style="z-index: 90;"/>
   <div class="ui-resizable-handle ui-resizable-w" style="z-index: 90;"/>
   <div class="ui-resizable-handle ui-resizable-se ui-icon ui-icon-gripsmall-diagonal-se" style="z-index: 90;"/>
   <div class="ui-resizable-handle ui-resizable-sw" style="z-index: 90;"/>
   <div class="ui-resizable-handle ui-resizable-ne" style="z-index: 90;"/>
   <div class="ui-resizable-handle ui-resizable-nw" style="z-index: 90;"/>
</div>

但Selenium无法通过以下方式捕获使用此ID识别的任何按钮:

$this->getXpathCount("//button[@id=\"popup_checklist_yes\"]");

甚至使用按钮标签(我不喜欢因为不准确):

$this->getXpathCount("//button[@type=\"button\"]/span[text()=\"Oui\"]");

这也不行:

$this->click('id=popup_checklist_yes');

任何人都遇到过这个问题而且已经修好了吗?

提前谢谢!

0 个答案:

没有答案