单击datepicker元素,而不是日历,但在同一窗格上按钮

时间:2016-09-01 16:57:43

标签: javascript c# selenium datepicker webdriver

我正在尝试点击第一个“今天”按钮,它会填写日期,请参阅代码:

<div class="ui-datepicker-buttonpane ui-widget-content">
<button type="button" class="ui-datepicker-current ui-state-default ui-priority-secondary ui-corner-all" data-handler="today" data-event="click">Today</button>
<button type="button" class="ui-datepicker-close ui-state-default ui-priority-primary ui-corner-all" data-handler="hide" data-event="click">Done</button>
</div>

这是一个“ui-datepicker-buttonpane ui-widget-content”,看起来像这样: enter image description here

我可以使用以下内容打开它:

Driver.Instance.FindElement(By.Id("NotAfterUtc")).Click();

但是尝试点击它不起作用。

            IWebElement button1 =     Driver.Instance.FindElement(By.TagName("button"));
            IList<IWebElement> buttons1 =     button1.FindElements(By.LinkText("Today"));

            foreach (IWebElement i in buttons1)
            {
                if (i.Text.Equals("Today"))
                {
                    i.FindElement(By.LinkText("Today")).Click();
                    break;
                }
            }

3 个答案:

答案 0 :(得分:2)

最好使用css-selector而不是xpath来选择该元素,如下所示:

Driver.FindElement(By.CssSelector("button.ui-datepicker-current"))

答案 1 :(得分:1)

它不是一个链接,它是一个按钮。使用"//button[contains(text(),'Today')]" xpath

答案 2 :(得分:0)

我认为您不应该测试Datepicker,因为这不是您的代码。 所以在我的测试中,我写了设置directely DateTime.Now,如下所示:

Driver.Instance.FindElement(By.Id("NotAfterUtc").send_keys(DateTime.Now);

我希望它有所帮助!