Java Selenium:一旦使用正确的url启动浏览器,就不会执行方法。
我的设想是: 包装A有 X类 Y类 类X正在打开一个驱动程序和url,所以我们将方法创建为opendriver(),并将注释设置为@BeforeTest 在Y类中,我创建了一个方法来单击登录链接并将注释设置为@Test 所以,一旦我通过testng.xml运行包,浏览器就会以正确的url启动,但在执行clickon登录链接方法时,我会遇到NullPointer异常Java Selenium:一旦使用正确的url启动浏览器,就不会执行方法。,java,selenium,testng,Java,Selenium,Testng,我的设想是: 包装A有 X类 Y类 类X正在打开一个驱动程序和url,所以我们将方法创建为opendriver(),并将注释设置为@BeforeTest 在Y类中,我创建了一个方法来单击登录链接并将注释设置为@Test 所以,一旦我通过testng.xml运行包,浏览器就会以正确的url启动,但在执行clickon登录链接方法时,我会遇到NullPointer异常 我的问题是:我如何处理上述情况?如何在url打开后执行clickon登录方法如果在标记中添加了相应的类以及带有@Test注释的Tes
我的问题是:我如何处理上述情况?如何在url打开后执行clickon登录方法如果在
标记中添加了相应的类以及带有@Test
注释的TestClass,则将执行带有@BeforeTest
注释的方法
例如:
public class TestNG1 {
@BeforeTest
public void init() {
System.out.println("Initialized");
}
}
public class TestNG2 {
@Test
public void doSomeThing() {
System.out.println("Test method");
}
}
那么testng.xml应该
<?xml version="1.0" encoding="UTF-8"?>
<suite name="Suite" parallel="false">
<test name="Test">
<classes>
<class name="com.sample.TestNG1"/>
<class name="com.sample.TestNG2"/>
</classes>
</test> <!-- Test -->
</suite> <!-- Suite -->
使用预初始化驱动程序的依赖类
public class SearchTest extends BaseTest {
private static final String SEARCH_BTN_NAME = "btnG";
private static final String SEARCH_BOX_ID = "lst-ib";
@Test(testName = "search", dependsOnMethods="openGoogle")
public void search() {
driver.findElement(By.id(SEARCH_BOX_ID)).sendKeys("Sharath Bhaskara");
driver.findElement(By.name(SEARCH_BTN_NAME)).click();
}
}
运行完整测试套件的testng.xml
<?xml version="1.0" encoding="UTF-8"?>
<suite name="Suite" parallel="false">
<test name="WebdriverTest">
<classes>
<class name="com.sample.project.BaseTest"/>
<class name="com.sample.project.SearchTest"/>
</classes>
</test> <!-- Test -->
</suite> <!-- Suite -->
注意:在
BaseTest
中,WebDriver实例被标记为protectedstatic
,因为默认情况下不会保存实例变量的状态 你好,莎拉特,谢谢你的回复。我按照你的建议试过了,但还是得到了NullPointerException。当我在类X中单击Login方法时,它就工作了,但是当我在类Y中创建类X的对象并使用类X的对象访问驱动程序时,它就会抛出异常。Akshay,你可能应该对你的驱动程序使用一个静态
修饰符。我已经编辑了我的答案,并为你的问题添加了完整的代码。
<?xml version="1.0" encoding="UTF-8"?>
<suite name="Suite" parallel="false">
<test name="WebdriverTest">
<classes>
<class name="com.sample.project.BaseTest"/>
<class name="com.sample.project.SearchTest"/>
</classes>
</test> <!-- Test -->
</suite> <!-- Suite -->