【问题标题】:Click datepicker element, not the calendar one, but button on the same pane单击日期选择器元素,而不是日历元素,而是同一窗格上的按钮
【发布时间】:2017-01-09 15:59:47
【问题描述】:

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

<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”,看起来像这样:

我可以使用以下方法打开它:

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

【问题讨论】:

    标签: javascript c# selenium datepicker webdriver


    【解决方案1】:

    我认为您不必测试 Datepicker,因为它不是您的代码。 所以在我的测试中,我写直接设置 DateTime.Now,像这样:

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

    希望对你有帮助!

    【讨论】:

    • 感谢@Ulisses Silva,这实际上对我不起作用,但我可能会在其他地方使用它。实际上,你是对的,我不应该测试 Datepicker,但这只是我场景的一部分,我必须使用这个组件。我没有明确地测试它。最佳
    【解决方案2】:

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

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

    【讨论】:

    • 非常感谢@OarpitO,这真的拯救了我的一天!
    • 刚刚@OarpitO,如果不是太麻烦,请投票支持我的问题,因为它似乎有效。谢谢!
    【解决方案3】:

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

    【讨论】:

    • 谢谢@Grasshopper,刚刚测试了这个方法,也可以。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-01-13
    • 2015-08-31
    • 2016-06-10
    • 2018-06-28
    • 1970-01-01
    • 2021-06-20
    • 2015-06-07
    相关资源
    最近更新 更多