【发布时间】:2019-06-11 15:39:02
【问题描述】:
我已经创建了我的 selenium 测试,但是我想开始清理它们以提高可读性和重用性。你如何处理你的变量?
我曾考虑设置某种按钮字典,可以查找但认为这可能会导致比解决更多的问题。
[Test]
public static void TestAccrualRuleSet()
{
//Setup buttons and variables
IWebDriver driver = new ChromeDriver();
var hamburgerMenu = By.XPath("//*[@id='menu-toggle']/span/i");
var settingsMenuButton = By.XPath("//*[@id='ulAdminNavBar']/li[4]/a");
var timeAndLaborMgmtButton = By.XPath("//*[@id='ulAdminNavBar']/li[4]/ul/li[11]/a");
var timeOffTrackingButton = By.XPath("//*[@id='ulAdminNavBar']/li[4]/ul/li[11]/ul/li[2]/a");
var actionMenu = By.Id("ucAccrualRules_ddlAccrual");
var ruleNameTextBox = By.Id("ucAccrualRules_ucAccrualRule_txtRuleName");
var accrualRuleFrequencyDropDown = By.Id("ucAccrualRules_ucAccrualRule_cboAccrualType");
var dropDownAccrualTypes = By.Id("ucAccrualRules_ucAccrualRule_hourTypes");
var dropDownAccrualTypesCheckBox1 = By.Id("ucAccrualRules_ucAccrualRule_hourTypes_0");
var dropDownAccrualTypesCheckBox2 = By.Id("ctl00_ContentPlaceHolder1_ucAccrualRules_ucAccrualRule_hourTypes_1");
var dropDownAccrualTypesCheckBox3 = By.Id("ctl00_ContentPlaceHolder1_ucAccrualRules_ucAccrualRule_hourTypes_6");
var maxCarryForwardTextBox = By.Id("ctl00_ContentPlaceHolder1_ucAccrualRules_ucAccrualRule_txtMaxRollover");
var accrualWaitingTextBox = By.Id("ctl00_ContentPlaceHolder1_ucAccrualRules_ucAccrualRule_txtAccrualWaitingPeriod");
var saveButton = By.XPath("//*[@id='ctl00_ContentPlaceHolder1_ucAccrualRules_ucAccrualRule_cmdUpdateName']");
var savedSuccessfully = By.Id("ctl00_ContentPlaceHolder1_ucAccrualRules_ucAccrualRule_UCErrorRuleProperties_lblMessage");
var propertiesButton = By.Id("ctl00_ContentPlaceHolder1_ucAccrualRules_ucAccrualRule_tpAccuralRulePropertiesnewForms");
IJavaScriptExecutor js = (IJavaScriptExecutor)driver;
//Begin test
AppExtensions.LoginUsingChrome(driver);
AppExtensions.SelectCompany(driver, "Ren's Test Account");
System.Threading.Thread.Sleep(1500);
WebDriverExtensions.Element_Click(driver, hamburgerMenu);
System.Threading.Thread.Sleep(1500);
虽然这不是整个测试,但它向您展示了我用来存储执行测试所需的按钮/链接的大量变量列表的示例。对于 Selenium 测试,这些变量的存储方式和存储位置的最佳做法是什么?
【问题讨论】:
-
我推荐使用页面工厂。
-
创建一个包含要运行的动作序列的文件结构。我会将每个“测试”分解为程序和行动。 (就像我对“浏览器”所做的那样:browsermator.com)这些过程对应于标准的可重复场景或错误报告。整个程序组将等效于回归测试。当您可以使用您的应用程序动态创建/存储/加载它们时,为什么还要编写所有这些定义变量的代码?
标签: c# selenium automation readability