Atata - 如何在页面 class 中定义警报?

Atata - How to define alert in page class?

我想测试以下应用程序:https://romashov.tech/chat

这是我主页的代码:

using Atata;
using _ = Chat.Tests.Model.MainPage;

namespace Chat.Tests.Model
{
    [Url("")]
    public class MainPage : Page<_>
    {
        [FindById("send")]
        public Button<_> Send { get; private set; }
    }
}

当我 运行 我的测试出现以下异常:

OpenQA.Selenium.UnhandledAlertException : unexpected alert open: {Alert text : Your name:} (Session info: chrome=75.0.3770.100)

如何在页面 class 中定义它? 如何在此提醒中添加昵称?

您可以向您的页面对象添加一个方法(名称为 EnterAs 或其他),该方法将使用 WebDriver API:

处理提示警报
using Atata;
using OpenQA.Selenium;

namespace Chat.UITests
{
    using _ = MainPage;

    public class MainPage : Page<_>
    {
        [FindFirst]
        public TextInput<_> Message { get; private set; }

        [FindByClass("send-button")]
        public Button<_> Send { get; private set; }

        public _ EnterAs(string name)
        {
            IAlert alert = Driver.SwitchTo().Alert();
            alert.SendKeys(name);
            alert.Accept();

            Driver.SwitchTo().DefaultContent();

            return Owner;
        }
    }
}

然后在测试中这样使用:

Go.To<MainPage>().
    EnterAs("SomeUser").
    Message.Set("test message").
    Send.Click();