我正在尝试使用selenium webdriver、testng和page Factory实现自动化。但我面临空指针异常。
public class BrowserOpenClose extends Common {
public WebDriver driver;
@BeforeTest
@Parameters("browser")
public void initBrowser(String browser) {
if (browser.equalsIgnoreCase("FF")) {
System.setProperty("webdriver.firefox.marionette", "./gecko/geckodriver.exe");
driver = new FirefoxDriver();
driver.manage().window().maximize();
driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
driver.get("https://www.flipkart.com/");
} else if (browser.equalsIgnoreCase("CH")) {
System.setProperty("webdriver.chrome.driver", "./chrome/chromedriver.exe");
driver = new ChromeDriver();
driver.manage().window().maximize();
driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
driver.get("https://www.flipkart.com/");
}
}
@AfterTest
public void closeBrowser() {
waitUntil(10);
driver.quit();
}
}
public class Login extends BrowserOpenClose {
@FindBy(xpath = "//a[text()='Log In']")
private WebElement loginLink;
@FindBy(xpath = "//input[@class='_2zrpKA']")
private WebElement username;
@FindBy(xpath = "//input[@class='_2zrpKA _3v41xv']")
private WebElement password;
@FindBy(xpath = "//button[@class='_3zLR9i _1LctnI _36SmAs']")
private WebElement loginButton;
public Login(WebDriver driver) {
PageFactory.initElements(driver, this);
this.driver = driver;
}
public void openLoginDialog() {
loginLink.click();
}
public void enterUsername(String name) {
username.sendKeys(name);
}
public void enterPassword(String pass) {
password.sendKeys(pass);
}
public void clickLogin() {
loginButton.click();
}
}
public class SwitchTShirtPage extends BrowserOpenClose {
WebDriver driver;
Login login;
@BeforeMethod
public void initElements() {
login = new Login(driver);
}
@Test
public void switchToTShirt() {
login.openLoginDialog();
login.enterUsername("abc");
login.enterPassword("xyz");
login.clickLogin();
}
}
SwitchtShirtPage
中的WebDriver驱动程序
从不初始化,并且始终为NULL
。
您想要的是BrowserOpencose
中的声明,因此只需从SwitchtShirtPage
中删除声明即可。
然后,要小心,因为驱动程序
是用一个@beforetest
初始化的,而这个@beforetest
只由test(类组)运行一次。因此,只有BrowserOpenCose
的第一个实例才会初始化Driver
。请考虑将@beforetest
替换为@beforeclass
,这样可以解决此问题。
我和我的朋友正在开发一个JavaFX应用程序,它充当我们学校的规划器。我们有任务(课堂作业)、事件、课程和学生信息。为了将数据持久地存储在用户的硬盘上,我们使用了JAXB。 我们已经注释了我们的类,并且可以成功地在包装器中整理任务类。问题是解组文件。 > 混淆名称和注释。命名似乎不是问题所在。 确定文件位置以确保其正确。 确定知道的类。它同时识别和类。 sysouting。它在内存中显示了一个有效
以下是在sun.reflect.nativeMethodAccessorImpl.Invoke0(本机方法)在sun.reflect.nativeMethodAccessorImpl.Invoke(未知源)在sun.reflect.NativeMethodAccessorImpl.Invoke(未知源)在java.lang.Reflect.Method.Invoke(未知源)在com.codena
问题内容: 我正在android中做一个应用程序,因此我需要访问com.android.internal.telephony API。现在,我可以访问这些API了,但问题是,无论我在自己的类中调用Class Call.java方法的什么地方,都会抛出。您可以在http://hi- android.info/src/com/android/internal/telephony/Call.java.h
我正在创建一个包含教授字段的表单,这个字段是id(长)、nome(字符串)、username(字符串)、email(字符串)和curso_coord(curso),因为curso是一个类课程的引用变量。 我尝试了curso.get(0).getid()来解决这个问题,但这是不够的 2019-10-04 15:37:00.700错误17580---[nio-8081-exec-1]C.P.P.Con
> 单击 受保护得空onPrepareDialog(int id,Dialog Dialog) 受保护的对话框onCreateDialog(int id) 如果我对timepickerdialog代码做了什么错误,请告诉我。