c# - 如何按顺序运行 selenium C# 测试用例?
问题描述
我在 C# 中使用 selenium web 驱动程序编写了几个测试用例。我已经使用 ORDER 属性按顺序运行测试用例。它是按订单运行的。但是测试不会等待先前的测试完成。
我也使用过 WebDriverWait。但它不会等待。
参考链接:https ://github.com/nunit/docs/wiki/Order-Attribute
请找到以下代码片段:
[Test, Order(1)]
public void OpenUserPage()
{
try
{
var wait = new WebDriverWait(_webDriver, new TimeSpan(2000));
wait.Until(ExpectedConditions.ElementToBeClickable(By.Id("NavigationMenu")));
var userPageEle = _webDriver.FindElement(By.ClassName("icon-Users"));
userPageEle.Click();
}
catch (Exception e)
{
SendMail.SendErrorEmail(e.StackTrace, "OpenUserPage()");
}
}
[Test, Order(2)]
public void AddUser()
{
try
{
var waitForAddUser= new WebDriverWait(_webDriver, new TimeSpan(5000));
waitForAddUser.Until(ExpectedConditions.ElementToBeClickable(By.CssSelector("[ng-click*=AddUserBtnClick]")));
var addUser = _webDriver.FindElement(By.CssSelector("[ng-click*=AddUserBtnClick]"));
addUser.Click();
var element = _webDriver.FindElement(By.XPath("//input[@id='Role_hidden']"));
var permissionSet = _webDriver.FindElement(By.XPath("//input[@id='RolePermissionSet_hidden']"));
var FirstName = _webDriver.FindElement(By.Name("FirstName"));
FirstName.SendKeys("Sangeetha");
var LastName = _webDriver.FindElement(By.Name("Last Name"));
LastName.SendKeys("Periyaiah");
var UserName = _webDriver.FindElement(By.Name("UserName"));
UserName.SendKeys("SangeetheP");
var Password = _webDriver.FindElement(By.Name("Password"));
Password.SendKeys("Sync@123");
var Email = _webDriver.FindElement(By.Name("Email"));
Email.SendKeys("sangee900@gmail.com");
var RoleList = _webDriver.FindElement(By.Name("RoleList"));
element.SendKeys("SuperAdmin");
var RolePermissionList = _webDriver.FindElement(By.Name("RolePermissionList"));
permissionSet.SendKeys("SuperAdmin");
var MobileNumber = _webDriver.FindElement(By.Name("MobileNumber"));
MobileNumber.SendKeys("8220867882");
var AreaCode = _webDriver.FindElement(By.Name("AreaCode"));
AreaCode.SendKeys("600002");
var Address = _webDriver.FindElement(By.Name("Address"));
Address.SendKeys("3/761, Ab Block");
var submit = _webDriver.FindElement(By.CssSelector("[ng-click*=AddUpdateUser]"));
submit.Click();
}
catch (Exception e)
{
SendMail.SendErrorEmail(e.StackTrace, "AddUser()");
}
}
[Test, Order(3)]
public void ApplyFilter()
{
try
{
var waitForSearch = new WebDriverWait(_webDriver, new TimeSpan(55000));
waitForSearch.Until(ExpectedConditions.ElementToBeClickable(By.CssSelector(".form-control.ng-pristine.ng-valid")));
var searchUser = _webDriver.FindElement(By.CssSelector(".form-control.ng-pristine.ng-valid"));
searchUser.SendKeys("as");
var waitFilter = new WebDriverWait(_webDriver, new TimeSpan(55000));
waitFilter.Until(ExpectedConditions.ElementToBeClickable((By.CssSelector("[ng-click*=filterUserBtnClick]"))));
var applyUserFilter = _webDriver.FindElement(By.CssSelector("[ng-click*=filterUserBtnClick]"));
applyUserFilter.Click();
var waitResetFilter = new WebDriverWait(_webDriver, new TimeSpan(55000));
waitResetFilter.Until(ExpectedConditions.ElementToBeClickable((By.CssSelector("[ng-click*=resetFilter]"))));
var resetFilter = _webDriver.FindElement(By.CssSelector("[ng-click*=resetFilter]"));
resetFilter.Click();
}
catch (Exception e)
{
SendMail.SendErrorEmail(e.StackTrace, "ApplyFilter()");
}
}
请分享任何其他解决方案。
提前致谢
解决方案
由于您没有提到测试用例的确切结果,但是在查看代码之后,我会建议两种方法来解决它。
如果 webdriverwait 代码行抛出一些异常并且它不起作用,那么您可以参考以下代码
var waitForAddUser= new WebDriverWait(_webDriver, new TimeSpan(5000)); waitForAddUser.IgnoreExceptionTypes(typeof(NoSuchElementException), typeof(ElementNotVisibleException)); waitForAddUser.Until(ExpectedConditions.ElementIsVisible(By.CssSelector("[ng- click*=AddUserBtnClick]")));
使用 [Setup()]CommonWait() { Thread.sleep(5000)); }
推荐阅读
- arduino - 用于 TTL 触发的 Arduino:一旦定义了 pinmode,就会收到触发
- pytorch - 来自拥抱脸的 pytorch_transformers 是否得到维护?
- node.js - Keycloak 更改注册或激活流程
- python - 使用数据类读取文本文件,将属性设置为日期时间对象
- r - 注释无法显示 geom-signif 中的所有标签
- google-drive-api - 在 Google 电子表格中打开图片链接时出现错误 403
- python - PyQt5 线程、信号和插槽。连接错误
- airflow - 在 Airflow Taskflow API 中分支 DAG 时出现问题
- python - 包装python超类的所有方法
- youtube - 自动播放嵌入的 Youtube 视频