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

时间:2019-08-23 09:26:42

标签: c# selenium testing selenium-webdriver

我需要验证网站上的字段包含有效数据时,单击“保存”后是否显示警告,提示“信息已成功保存”。现在,我有一个代码来查找网络元素并填充有效数据,如下所示:

IWebElement carName = driver.FindElement(By.XPath("..."));
carName.Click();
carName.SendKeys("Name of the car");

IWebElement saveButton = driver.FindElement(By.XPath("..."));
saveButton.Click();

我希望在显示消息时验证它是否已显示并通过测试。

2 个答案:

答案 0 :(得分:1)

确定是否显示弹出式元素,如果不是,则元素计数为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()

答案 1 :(得分:0)

我建议使用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;
}