【问题标题】:Not recognising selenium commands in other than Test class and throwing error无法识别除 Test 类以外的 selenium 命令并引发错误
【发布时间】:2013-10-17 21:41:56
【问题描述】:

我正在使用 Selenium+JUnit+Eclipse 我在 3 个包中有 3 个类。测试类为A(在默认包中),活动类为B(在活动包中),存储库类为C(在objectRepository包中)。

如果我在 A 类中进行所有活动,那么它工作正常。但是,如果我将 B 类中的活动分开并在 A 类中调用 B 类方法,那么它会抛出 java.lang.NullPointerException 错误...

ClassA.java 的代码

import com.thoughtworks.selenium.DefaultSelenium;
import com.thoughtworks.selenium.Selenium;
import junit.framework.TestCase;
import org.junit.Test;
import activityPkg.ClassB;


public class ClassA extends TestCase {
ClassB objB = new ClassB();
public void setUp() throws Exception
{
selenium = new DefaultSelenium("localhost", 4444, "*firefox", "https://www.google.com");
selenium.start();
selenium.windowFocus();
selenium.windowMaximize();}

@Test
public void testA() throws Exception
{
selenium.open("/");
try
{
Thread.sleep(5000);
String result = objB.MethodB();
}
catch(Exception e)
{
e.printStackTrace();
}
}

ClassB.java 的代码

package activityPkg;
import com.thoughtworks.selenium.Selenium;

public class RegressionTools {
Selenium selenium;
ObjectRepository objRep = new ObjectRepository();
public String MethodB() throws Exception
{
String value=null;
try
{
selenium.start();
if(selenium.isElementPresent("//input[@name='btnG' and @value='Google Search']"))
{
System.out.println("Element is present");
value = pass;
}
else
{
System.out.println("Element is not present");
value = Fail;
}

}
catch(Exception e)
{
e.printStackTrace();
}
return value;
}
}

但每次它从 MethodB 的 IF 条件停止并来捕获块。 为什么它甚至没有进入 IF 或 ELSE 条件。 我错过了什么吗?

【问题讨论】:

  • 堆栈跟踪是什么样的?

标签: eclipse selenium junit


【解决方案1】:

你的 B 类中没有任何 selenium 实例。我猜你的例外是 NullPointerException

你在你的第一个类中启动你的 selenium 实例,并且在你的类 B 中没有指向它的引用

良好的做法是拥有一个 SeleniumFixture 实用程序,该实用程序包含对已启动实例的引用并在测试套件期间管理 selenium 服务器的生命周期

【讨论】:

  • 哦!我已经解决了这个问题。我必须在 ClassA 中将 selenium 对象创建为公共静态对象,然后需要以 ... ClassA ---------- public class ClassA extends TestCase { public static Selenium selenium; } ClassB ---------- public class ClassB{ public String MethodB() throws Exception { String value=null;试试 { if(ClassA.selenium.isElementPresent("//input[@name='btnG' and @value='Google Search']")) { System.out.println("元素存在");价值=通过; }
猜你喜欢
  • 2017-08-22
  • 2017-12-18
  • 2011-10-25
  • 2018-02-08
  • 1970-01-01
  • 1970-01-01
  • 2022-10-14
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多