【问题标题】:How to use value of Variable from void method?如何使用 void 方法中的变量值?
【发布时间】:2017-01-13 17:56:40
【问题描述】:

我有一些从网站获取价值的无效测试:

  @Test
        public void MemberEditInfo(){
        ...
         WebElement element = driver.findElement(By.id("Member_Email"));
         String elementval = element.getAttribute("value");
         }

如何在另一个类中使用 String elementval 的值(该方法是 void 并且不返回任何值,因为如果它会返回一个值,那么 Junit 将无法工作)?

【问题讨论】:

    标签: java selenium junit


    【解决方案1】:

    只是包装

    WebElement element = driver.findElement(By.id("Member_Email"));
    String elementval = element.getAttribute("value");
    

    变成一个方法,比方说

    public static String returnAttributeValue(driver_variable_type driver, String attr, String attrName) {
       driver.findElement(By.id(attr)).getAttribute(attrName);
    }
    

    并且只需在两者中使用此方法:您的测试和您需要它的地方。

    【讨论】:

    • 在每次新登录网站之前,我都需要进行额外的测试,以便为用户接收电子邮件值?
    • 这个语句应该有一些返回变量。它应该是一些字符串?
    • 这个方法必须返回一个String类型的结果(来自eclipse)。
    【解决方案2】:

    您不能在具有void 返回类型的函数中返回值。尝试将其更改为静态值或在另一个类中调用静态方法。您最终可能不得不为此定义一个新类。

    【讨论】:

      【解决方案3】:

      我不使用 JUnit,所以如果你不能返回除了 void 以外的东西,一种选择是在这个类中创建一个静态类属性并将String 放入其中。您只需从其他类中引用它即可。

      在这堂课中,Test1

      static String elementVal;
      
      @Test
      public void MemberEditInfo()
      {
          ...
          WebElement element = driver.findElement(By.id("Member_Email"));
          this.elementVal = element.getAttribute("value");
      }
      

      在你的另一个班级,Test2

      String elementVal = Test1.elementVal;
      

      【讨论】:

      • 我想这是一个很好的方法,但是当 Test1 结束时 test2 中的变量 elementval 具有 Null 值。您如何看待,当 Test1 关闭时,我可以为案例保存元素 val 的值吗?
      • 老实说,最佳实践是测试不应该相互依赖数据。你真的应该找到一种更好、不同的方法来做到这一点。每个测试都应该是独立的,并且应该能够以任何顺序运行。
      • 谢谢,我会再找一个决定。
      猜你喜欢
      • 2018-11-05
      • 1970-01-01
      • 1970-01-01
      • 2020-06-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-06-16
      • 2017-02-19
      相关资源
      最近更新 更多