I want to group the common methods in one file and use it. For example, login to a page using selenium may be used in multiple times. Define that in class A and call it in class B. However, it throws null pointer exception.
class A has
public void test_Login() throws Exception
{
try{
selenium.setTimeout("60000");
selenium.open("http://localhost");
selenium.windowFocus();
selenium.windowMaximize();
selenium.windowFocus();
selenium.type("userName", "admin");
selenium.type("password", "admin");
Result=selenium.isElementPresent("//input[@type='image']");
selenium.click("//input[@type='image']");
selenium.waitForPageToLoad(Timeout);
}
catch(Exception ex)
{
System.out.println(ex);
ex.printStackTrace();
}
}
with all other java syntax
in class B
public void test_kk() throws Exception
{
try
{
a.test_Login();
}
catch(Exception ex)
{
System.out.println(ex);
ex.printStackTrace();
}
}
with all syntax.
When I execute class B, I got this error,
java.lang.NullPointerException
at A.test_Login(A.java:32)
at B.test_kk(savefile.java:58)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at junit.framework.TestCase.runTest(TestCase.java:168)
at junit.framework.TestCase.runBare(TestCase.java:134)
at com.thoughtworks.selenium.SeleneseTestCase.runBare(SeleneseTestCase.j
ava:212)
at junit.framework.TestResult$1.protect(TestResult.java:110)
at junit.framework.TestResult.runProtected(TestResult.java:128)
at junit.framework.TestResult.run(TestResult.java:113)
at junit.framework.TestCase.run(TestCase.java:124)
at junit.framework.TestSuite.runTest(TestSuite.java:232)
at junit.framework.TestSuite.run(TestSuite.java:227)
at junit.textui.TestRunner.doRun(TestRunner.java:116)
at junit.textui.TestRunner.doRun(TestRunner.java:109)
at junit.textui.TestRunner.run(TestRunner.java:77)
at B.main(B.java:77)
When I execute class B, I got this error,
java.lang.NullPointerException
at A.test_Login(A.java:32)
at B.test_kk(savefile.java:58)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at junit.framework.TestCase.runTest(TestCase.java:168)
at junit.framework.TestCase.runBare(TestCase.java:134)
at com.thoughtworks.selenium.SeleneseTestCase.runBare(SeleneseTestCase.java:212)
at junit.framework.TestResult$1.protect(TestResult.java:110)
at junit.framework.TestResult.runProtected(TestResult.java:128)
at junit.framework.TestResult.run(TestResult.java:113)
at junit.framework.TestCase.run(TestCase.java:124)
at junit.framework.TestSuite.runTest(TestSuite.java:232)
at junit.framework.TestSuite.run(TestSuite.java:227)
at junit.textui.TestRunner.doRun(TestRunner.java:116)
at junit.textui.TestRunner.doRun(TestRunner.java:109)
at junit.textui.TestRunner.run(TestRunner.java:77)
at B.main(B.java:77)Rajasankar
In class B you call a.test_Login(); but the test_Login() method will
call the selenium associated with class A, which is null. This results
in a NullPointerException.
The solution is to pass the selenium from class B to class A. I would
create a constructor in class A:
public A(Selenium selenium) {
super.selenium = selenium;
}
In class B I would have:
A a;
public void setUp() {
setUp("http://localhost", "*iexplore");
a = new A(super.selenium);
}
This will set the selenium associated with class A to be the same as
the selenium in class B.
Darrell
--
You received this message because you are subscribed to the Google Groups "Selenium Users" group.
To post to this group, send email to seleniu...@googlegroups.com.
To unsubscribe from this group, send email to selenium-user...@googlegroups.com.
For more options, visit this group at http://groups.google.com/group/selenium-users?hl=en.