【问题标题】:NullPointerException when calling variable from another class [duplicate]从另一个类调用变量时出现 NullPointerException [重复]
【发布时间】:2016-11-08 17:00:18
【问题描述】:

我是一名 QA 工程师,正在编写测试脚本。我试图在方法中设置一个等于当前页面 URL 的 URL 字符串变量,并在测试方法中调用包含该变量的方法。

*编辑**** 最初我认为这是变量本身的问题,但事实并非如此。我已经调整了我的问题以更好地代表问题

当我在与测试相同的类和方法中启动和定义 URL 变量时,它工作正常

public void RFPsCreatedStatusTest(){
    RequestsataGlance.RFPinProgressbtnclick();
    RequestsataGlance.CreatedClick();
    String url = driver.getCurrentUrl();
   System.out.println(url);
Assert.assertTrue(url.contains("url.com"), "Incorrect Page, SR list call status does not match status selected ");

但是,当我在测试方法和类之外分别创建和调用公共 void() {} URL 方法 [createdassertion] 时,它不起作用。想法?

 @Test
        public void RFPsCreatedStatusTest(){
            RequestsataGlance.RFPinProgressbtnclick();
            RequestsataGlance.CreatedClick();
            RequestsataGlance.Createdassertion();


        }`

【问题讨论】:

  • 我已编辑问题以更好地反映问题

标签: java selenium automated-tests


【解决方案1】:

下面一行没有用,因为你将在下一个语句中重新定义 url 变量

url = new String();

行后

url = driver.getCurrentUrl();

url 会包含浏览器的url,那么为什么要包含字符串“[expected result]”呢?当然不会,因为它会包含一个 URL

编辑 1

从定义

assertTrue(java.lang.String message, boolean condition) 

所以如下使用它

Assert.assertTrue("Incorrect Page, SR list call status does not match status selected ", url.contains("whatever.com"));

【讨论】:

  • 对于造成的混乱,我深表歉意,我知道它会返回任何 URL,但由于没有 URL,我只是将 [预期条件] 作为占位符的糟糕选择。
  • 那么,driver.getCurrentUrl(); 语句可能没有返回任何内容,即它返回 null,因此您不能使用 url 变量
  • 好主意,我将 URL 定义为 "123" ,断言应该失败但我仍然得到了异常。
  • @Lamar,我更新了我的答案,你再试一次吗?你应该像我写的那样使用不同的断言
  • 我仔细检查了断言语句,它是布尔值,字符串:不是字符串,布尔值。我意识到我遗漏了一个重要的部分并原谅我刚刚习惯所以我将该方法称为另一个类的测试方法,请参阅我更新的帖子
【解决方案2】:

代码中任何内容都可以为空的唯一方法是如果

driver.getCurrentUrl()

返回空值。 毕竟你写了一个Test,发现了一个问题。修好它! ;-)

顺便说一句:如果你简单地写,你的代码会更容易阅读:

String url = driver.getCurrentUrl();

【讨论】:

  • 在原帖中添加了一些额外的细节
猜你喜欢
  • 1970-01-01
  • 2019-03-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-04-29
  • 1970-01-01
  • 2019-12-28
  • 1970-01-01
相关资源
最近更新 更多