在c#中使用selenium webdriver单击jquery对话框按钮

时间:2014-11-18 08:58:52

标签: internet-explorer selenium selenium-webdriver

使用selenium web驱动程序进行Internet Explorer(IEDriverServer_x64_2.44.0)

我试图点击jquery对话框上的按钮 我的代码如下:

$("#dialog-text").html(dlg_message);
        $("#dialog-msg").dialog({
            bgiframe: true,
            autoOpen: false,
            height: 'auto',
            modal: true,
            draggable: false,
            title: dlg_title,
            buttons: btns,
            close: function () {
                //$('body').css('overflow', 'visible');
                for (var item in controlsToEnable)
                    getControl(controlsToEnable[item]).disabled = false;
            },
            open: function (event, ui) { $('.ui-widget-overlay').css('width', '100%'); }
        });

        $("#dialog-message").dialog('open');
        $(this).parents('.ui-dialog-buttonpane button:eq(' + indexButtonFocused + ')').focus();


<div id="dialog-msg" style="display: none;">
    <p style="margin: 0 7px 50px 7px;">
        <span class="ui-icon ui-icon-circle-check"></span><span id="dialog-text">MESSAGE</span>
    </p>
</div>

此弹出窗口附带2个按钮是和否(我将其存储在var:btns中)btns [&#39; No&#39;]和btns [&#39;是&#39;] 我如何点击这个按钮?我试过了,

driver.SwitchTo().Frame(0);
        driver.FindElement(By.Name("No")).Click();

也尝试了,

driver.SwitchTo().Alert().Accept(); --> this works for confirm message

所以基本上我试图点击这个对话框的按钮而不能。

1 个答案:

答案 0 :(得分:1)

考虑到您在问题中粘贴的代码以及评论中提供的按钮的HTML(您应该编辑问题并将HTML按钮放在问题中),您的WebDriver代码将找不到该按钮。 button元素没有name属性,因此使用By.Name()定位器策略无法找到它。

意识到尝试通过文本查找元素通常不是一个好方法。话虽如此,您可以尝试以下内容:

// WARNING!! Untested code below. May not be exactly correct.
driver.FindElement(By.XPath("//div[contains(., 'No')]"));