![](/img/trans.png)
[英]How to call dropdown value from one java class(page) to another TestNG class(test) in selenium webdriver?
[英]How to call a java class in selenium webdriver?
刚开始学习selenium-webdriver并尝试.... soo这是我的道歉?
下面创建了一个功能导航到Google主页
package UtilityGoogle;import org.openqa.selenium.WebDriver; import org.openqa.selenium.firefox.FirefoxDriver;
public class HomePage { WebDriver WD=null;
public static void main(WebDriver WD) { // TODO Auto-generated method stub WD = new FirefoxDriver(); WD.navigate().to("https://www.google.co.in"); WD.manage().window().maximize(); return; }
和下面的代码调用Homepage函数。
package GoogleMain; import org.openqa.selenium.WebDriver; import org.testng.AssertJUnit; import org.testng.annotations.Test; import UtilityGoogle.HomePage; public class Google_Tc1 { private static WebDriver XP = null;@ Test public void Open() { HomePage HP = new HomePage(); String actual = XP.getTitle(); String expected = "Google"; AssertJUnit.assertEquals(expected, actual); } }
遇到错误....请帮助我解决此问题
FAILED: Open java.lang.NullPointerException at GoogleMain.Google_Tc1.Open(Google_Tc1.java:13) 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)
您可以在此处将WebDriver设置为null
:
private static WebDriver XP = null;
然后在您的Open()
方法中尝试使用它:
String actual = XP.getTitle();
堆栈跟踪通知您以下信息:
at GoogleMain.Google_Tc1.Open(Google_Tc1.java:13)
所以要解决它分配XP
您的WebDriver XP
instrance变量永远不会初始化。 永远不会调用HomePage
的main
方法,即使这样也没关系,因为它不会操纵您要在测试中使用的XP
变量。
我相信这是您想要实现的目标:
public class HomePage {
public HomePage(WebDriver driver) {
driver = new FirefoxDriver();
driver.navigate().to("https://www.google.co.in");
driver.manage().window().maximize();
}
}
和测试类:
public class GoogleTest {
private static WebDriver driver;
@Test
public void Open() {
HomePage homePage = new HomePage(driver);
String actual = driver.getTitle();
String expected = "Google";
AssertJUnit.assertEquals(expected, actual);
}
}
现在,当您创建将驱动程序作为参数传递的HomePage
实例时,该驱动程序将被初始化并可以使用。
我更改了变量名称,因为您使用的名称不好。 你应该读这个 。 我也认为还有很多其他改进的余地。 您可能应该在这里和这里阅读有关页面对象模型的信息 ,并尝试坚持下去。
就像您在Homepage类的main方法中初始化WD一样, WD = new FirefoxDriver();
同样,您必须在使用XP之前先对其进行初始化。
package GoogleMain; import org.openqa.selenium.WebDriver; import org.testng.AssertJUnit; import org.testng.annotations.Test; import UtilityGoogle.HomePage; public class Google_Tc1 { private static WebDriver XP = new FirefoxDriver();@ Test public void Open() { HomePage HP = new HomePage(); String actual = XP.getTitle(); String expected = "Google"; AssertJUnit.assertEquals(expected, actual); } }
public class GoogleTest {
private static WebDriver driver;
@Test
public void Open() {
HomePage homePage = new HomePage(driver);
String actual = driver.getTitle();
String expected = "Google";
AssertJUnit.assertEquals(expected, actual);
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.