为了账号安全,请及时绑定邮箱和手机立即绑定

如何在 C# 中使用 Selenium 验证是否显示警报消息?

如何在 C# 中使用 Selenium 验证是否显示警报消息?

C#
湖上湖 2023-09-16 17:32:48
我需要验证在网站中,当字段包含有效数据时,单击“保存”后会显示一条警报,提示“信息已成功保存”。现在我有一个代码来查找网络元素并填充有效数据,如下所示:IWebElement carName = driver.FindElement(By.XPath("..."));carName.Click();carName.SendKeys("Name of the car");IWebElement saveButton = driver.FindElement(By.XPath("..."));saveButton.Click();我希望当显示消息时验证它是否已显示并且测试已通过。
查看完整描述

2 回答

?
qq_遁去的一_1

TA贡献1725条经验 获得超7个赞

判断是否出现弹出元素,如果不出现元素计数为0


List<IWebElement> elementList = new List<IWebElement>();

elementList.AddRange(driver.FindElements(By.XPath("..."));


if(elementList.Count > 0)

{

 //If the count is greater than 0 your element exists.

     Console.Write("pop up is present");

}else{

  Console.Write("pop up not present");

}

注意:请确保使用FindElements()而不是FindElement()


查看完整回答
反对 回复 2023-09-16
?
隔江千里

TA贡献1906条经验 获得超10个赞

我建议使用 webdriverwait,因为根据表单的不同,在成功消息之前可能会有延迟。


var wait = new WebDriverWait(driver, TimeSpan.FromSeconds(5));

var element = wait.Until(ExpectedConditions.ElementIsVisible(By.XPath("your xpath here")));

Assert.NotNull(element);

断言格式将根据您的框架而有所不同。那是来自 xUnit 的。


注意:包含 ExpectedConditions 的包没有维护,但它们非常简单,如果您担心的话,可以将其复制到您的代码或自己的包中。


public static Func<IWebDriver, IWebElement> ElementIsVisible(By locator)

{

    return (driver) =>

    {

        try

        {

            return ElementIfVisible(driver.FindElement(locator));

        }

        catch (StaleElementReferenceException)

        {

            return null;

        }

    };

}


private static IWebElement ElementIfVisible(IWebElement element)

{

    return element.Displayed ? element : null;

}


查看完整回答
反对 回复 2023-09-16
  • 2 回答
  • 0 关注
  • 97 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信