我是Selenium的新手。
我正在编写一段代码DriverManager.Java(加载浏览器)
package com.moni.tef;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.firefox.FirefoxDriver;
public class DriverManager {
private static WebDriver driver;
static {
driver = new FirefoxDriver();
}
public WebDriver getWebDriver(){
driver.get("https://public-testing/");
return driver;
}
}
我创建了另一个类..并尝试使用这个getWebDriver方法..然后我的代码片段变为public static。代码正在运行,但任何人都可以解释这个修复是什么(由eclipse完成)
public static WebDriver getWebDriver(){
driver.get("https://xxx.url.url");
return driver;
}
答案 0 :(得分:1)
IMO,在您新写的课程中,您尝试静态调用getWebDriver()
方法:
DriverManager.getWebDriver()
而不是首先创建DriverManager
的实例:
new DriverManager().getWebDriver()
这会导致编译错误,因为最初,DriverManager#getWebDriver()是实例方法,而不是类方法(从而静态 )。
因此,Eclipse可能通过制作方法static
来帮助您(确保您的渐进式认可),以便成功编译。
有关static
概念的更多信息:点击here。
答案 1 :(得分:0)
静态成员对于类的所有实例都是通用的。非静态成员特定于类(对象)的实例。静态方法和成员(字段,属性)用于在程序或API的生命周期内不需要更改的情况。这方面的一个例子是Math.PI.一种更常见(正确)的描述方式是:Static methods and fields are useful when they conceptually don't belong to an instance of something.
静态成员还具有可从任何位置访问的属性(除非在没有公开的情况下声明),而没有类的实例(对象)。
当JVM加载类时,类的特殊static {}
块为run only once。