我有2个Java类; Main.java和Methods.java。在Main.java中,我初始化了chrome webdriver,并希望对Methods.java中的方法使用相同的webdriver。下面是代码。
在Main.java下
Methods getMethods = new Methods();
@BeforeTest
public void Setup()
{
System.setProperty("webdriver.chrome.driver", "C:\\...\\chromedriver.exe");
driver = new ChromeDriver();
driver.get(PropertiesConfig.getObject("websiteUrl"));
driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);
}
@Test
public void TestCase1()
{
getMethods.method1();
}
@AfterTest
public void QuitTC() {
getMethods.QuitTC(); }
在Methods.java下
public void method1 (){
driver.manage().timeouts().implicitlyWait(3, TimeUnit.SECONDS);
….. }
public void QuitTC() {
driver.quit();
}
我的问题是如何从Main.java调用初始化Webdriver并在Methods.java中使用它?
任何帮助都将受到赞赏!谢谢!
答案 0 :(得分:0)
您可以在实用程序类中执行类似的操作(例如TestUtil.java)
private static WebDriver wd;
public static WebDriver getDriver() {
return wd;
}
然后您可以使用以下代码行获取上述任何类中的webdriver并对其进行处理
WebDriver driver = TestUtil.getDriver();
答案 1 :(得分:0)
像这样声明 driver 的全局变量:
WebDriver driver = null;
@BeforeTest
public void Setup()
{
System.setProperty("webdriver.chrome.driver", "C:\\...\\chromedriver.exe");
driver = new ChromeDriver();
driver.get(PropertiesConfig.getObject("websiteUrl"));
driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);
}
现在,您可以像这样从方法类中调用method1:
public class Methods{
public Methods(WebDriver driver){
this.driver = driver;
}
public void method1 (){
driver.manage().timeouts().implicitlyWait(3, TimeUnit.SECONDS);
….. }
}
现在,一旦创建了Methods类的实例,就将调用构造函数并可以传递驱动程序引用。
答案 2 :(得分:0)
尝试
Class1 {
public WebDriver driver = null;
public String baseURL="...";
public void openURL() {
System.setProperty("webdriver.chrome.driver", "D:...\\chromedriver.exe");
driver = new ChromeDriver();
driver.get(baseURL);
}
Class2 extends Class1 {
driver.findElement(....);
}