我需要验证网站上的字段包含有效数据时,单击“保存”后是否显示警告,提示“信息已成功保存”。现在,我有一个代码来查找网络元素并填充有效数据,如下所示:
IWebElement carName = driver.FindElement(By.XPath("..."));
carName.Click();
carName.SendKeys("Name of the car");
IWebElement saveButton = driver.FindElement(By.XPath("..."));
saveButton.Click();
我希望在显示消息时验证它是否已显示并通过测试。
答案 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;
}