【问题标题】:Selenium WebDriver Generic TestSelenium WebDriver 通用测试
【发布时间】:2017-09-22 08:36:44
【问题描述】:

我正在探索 c# 中的 selenium web 驱动程序。我想让我的测试尽可能通用。我想要的是,当我的表单加载时,所有文本字段都被识别并填充了一些虚拟数据。当我使用下面指定的 switch 语句时,仅填充第一个文本字段。我怎样才能让它得到所有的字段并一个一个地填写它们

foreach (var group in form.GroupFormFields)
{
   foreach (var field in group.FormFields)
   {
      var fieldId = "txt_" + field.field_title;

      switch (field.field_type_id)
      {
         case "textfield":
            var textfield = Driver.Instance.FindElement(By.XPath("//input[@type='text']"));
            textfield.SendKeys("abc");
            //field.field_title
            //fill the form field
            break;
         case "email":
            var email = Driver.Instance.FindElement(By.XPath("//input[@type='email']"));
            email.SendKeys("xyz@gmail.com");
            break;
         case "password":
            var password = Driver.Instance.FindElement(By.XPath("//input[@type='password']"));
            password.SendKeys("Abc1234%");
            break;
         case "checkbox":
            var checkbox = Driver.Instance.FindElement(By.XPath("//input[@type='checkbox']"));
            checkbox.Click();
            break;
            default:
            break;
      }
   }
}   

【问题讨论】:

  • 您的页面总共有多少个字段?
  • @GaurangShah 每个表单都有不同数量的字段但是我总共有 8 种不同类型的字段
  • 那么制作一个 switch case 不是一个好主意,而是创建一个函数来获取所有这些值并填写表格。您可以为每个页面使用和覆盖此功能。

标签: c# unit-testing selenium selenium-webdriver automation


【解决方案1】:

切换案例是在特定条件下执行特定代码,因此根据您作为caseField 传递的内容,将调用特定案例并非全部

如果您想用虚拟数据填充所有输入字段,简单的方法是获取所有输入元素并遍历它们。我不会 C#,但是 JAVA 和 C# 非常相似,所以你可以理解这段代码。

List<WebElement> inputs = driver.findElements(By.xpath("//input"));
for(WebElement input: inputs){
    input.sendKeys("filled through automation");
}

【讨论】:

    【解决方案2】:

    使用 selenium 开发自动化项目可能很难维护,因为有时我们需要自动化大型复杂系统,最佳实践是使用 Page Object 设计模式。 在自动化项目中实现页面对象将有助于编码人员坚持 SOLID 原则。 您可以使用负责业务逻辑的类来包装您的页面对象 - 填写表单。 请查看下面的示例

    包装它并实现填充细节部分

    现在你要做的就是调用 pageObjectContainer.FillDetails(submit: true)

    【讨论】:

      【解决方案3】:

      我认为你可以创建一个列表:

      • 键:输入的 id
      • 值:要输入的值

      创建一个遍历列表的for循环,通过Key找到元素并使用Value输入。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-12-21
        • 1970-01-01
        • 1970-01-01
        • 2013-02-20
        • 2023-04-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多