我正在使用Selenium + JUnit + Eclipse 我有3个包3个班。测试类为A(在默认包中),Activity类为B(在活动包中),Repository类为C(在objectRepository包中)。
如果我在A级做所有活动,那么它的工作正常。但是,如果我将类B中的活动分开并在classA中调用classB方法,那么抛出java.lang.NullPointerException错误......
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();
}
}
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状态。 我错过了什么吗?
答案 0 :(得分:0)
你的班级B中没有任何selenium实例。我猜你的例外是NullPointerException
你在第一堂课开始你的selenium实例,在你的B班没有指向它的参考
良好的做法是拥有一个SeleniumFixture
实用程序,该实用程序包含对已启动实例的引用,并在测试套件中管理selenium服务器的生命周期