我是Selenium的新手,我正在尝试创建一个小的框架,在该框架中登录应用程序,然后尝试验证帐户中的一些文本。
但是一旦我的脚本登录帐户,浏览器就会关闭,并且我无法验证文本字符串。
有人说这是因为驱动程序为空,因此我需要在LoginPage中导入基类。我也尝试过此操作,并遇到了相同的问题。
基础类
package testcases; import org.openqa.selenium.WebDriver; import org.openqa.selenium.support.PageFactory; import factory.BrowserFactory; import factory.DataproviderFactory; import pages.LoginPage; public class baseClass { WebDriver driver; public void setUP() { driver=BrowserFactory.getBrowser("chrome"); driver.get(DataproviderFactory.getConfig().getApplicationurl()); } public void loginIntoApplication() { LoginPage login=PageFactory.initElements(driver, LoginPage.class); login.Login(DataproviderFactory.getExcel().getData(0, 0, 0), DataproviderFactory.getExcel().getData(0, 0, 1)); } public void TearDown() { driver.quit(); } }
登录页面
package pages; import org.openqa.selenium.By; import org.openqa.selenium.WebDriver; import org.openqa.selenium.WebElement; import org.openqa.selenium.support.FindBy; import org.openqa.selenium.support.ui.ExpectedConditions; import org.openqa.selenium.support.ui.WebDriverWait; import testcases.baseClass; public class LoginPage extends baseClass { WebDriver driver; public LoginPage(WebDriver ldriver) { this.driver=ldriver; } @FindBy(xpath="//input[@id='log']") WebElement username; @FindBy(xpath="//input[@id='pwd']") WebElement password; @FindBy(xpath="//input[@id='login']") WebElement LoginButton; @FindBy(xpath="//li[@id='wp-admin-bar-my-account']/a") WebElement loginVerification; public String loginText; public String Exp="Howdy, AISHWARY"; public void Login(String uname,String pwd) { username.sendKeys(uname); password.sendKeys(pwd); LoginButton.click(); } public String LoginVerification() { WebDriverWait wait=new WebDriverWait(driver, 20); wait.until(ExpectedConditions.visibilityOfElementLocated(By.xpath("//li[@id='wp-admin-bar-my-account']/a"))); loginText=loginVerification.getText(); return loginText; } }
testCaseLoginPage
package testcases; import org.openqa.selenium.By; import org.openqa.selenium.WebDriver; import org.openqa.selenium.WebElement; import org.openqa.selenium.support.PageFactory; import org.openqa.selenium.support.ui.ExpectedConditions; import org.openqa.selenium.support.ui.WebDriverWait; import org.testng.Assert; import org.testng.annotations.AfterTest; import org.testng.annotations.BeforeTest; import org.testng.annotations.Test; import pages.LoginPage; public class testCaseLoginPage extends baseClass{ WebDriver driver; baseClass base=new baseClass(); @BeforeTest public void initial() { base.setUP(); } @Test(priority=1) public void login() { base.loginIntoApplication(); LoginPage login=PageFactory.initElements(driver, LoginPage.class); login.LoginVerification(); System.out.println(login.loginText); Assert.assertEquals(login.loginText, login.Exp,"Unable to verify login verification"); } @AfterTest public void close() { base.TearDown(); } }
错误日志
[TestNG] Running:
C:\Users\Freak\AppData\Local\Temp\testng-eclipse--1783674419\testng-customsuite.xml
Starting ChromeDriver 2.27.440174 (e97a722caafc2d3a8b807ee115bfb307f7d2cfd9) on port 10357
Only local connections are allowed.
May 28, 2017 7:08:42 AM org.openqa.selenium.remote.ProtocolHandshake createSession
INFO: Detected dialect: OSS
FAILED: login
java.lang.NullPointerException
at com.google.common.base.Preconditions.checkNotNull(Preconditions.java:770)
at org.openqa.selenium.support.ui.FluentWait.<init>(FluentWait.java:96)
at org.openqa.selenium.support.ui.WebDriverWait.<init>(WebDriverWait.java:71)
at org.openqa.selenium.support.ui.WebDriverWait.<init>(WebDriverWait.java:45)
at pages.LoginPage.LoginVerification(LoginPage.java:42)
at testcases.testCaseLoginPage.login(testCaseLoginPage.java:36)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.testng.internal.MethodInvocationHelper.invokeMethod(MethodInvocationHelper.java:80)
at org.testng.internal.Invoker.invokeMethod(Invoker.java:714)
at org.testng.internal.Invoker.invokeTestMethod(Invoker.java:901)
at org.testng.internal.Invoker.invokeTestMethods(Invoker.java:1231)
at org.testng.internal.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:127)
at org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:111)
at org.testng.TestRunner.privateRun(TestRunner.java:767)
at org.testng.TestRunner.run(TestRunner.java:617)
at org.testng.SuiteRunner.runTest(SuiteRunner.java:334)
at org.testng.SuiteRunner.runSequentially(SuiteRunner.java:329)
at org.testng.SuiteRunner.privateRun(SuiteRunner.java:291)
at org.testng.SuiteRunner.run(SuiteRunner.java:240)
at org.testng.SuiteRunnerWorker.runSuite(SuiteRunnerWorker.java:52)
at org.testng.SuiteRunnerWorker.run(SuiteRunnerWorker.java:86)
at org.testng.TestNG.runSuitesSequentially(TestNG.java:1198)
at org.testng.TestNG.runSuitesLocally(TestNG.java:1123)
at org.testng.TestNG.run(TestNG.java:1031)
我是Selenium的新手,我正在尝试创建一个小的框架,在该框架中登录应用程序,然后尝试验证帐户中的一些文本。但是,一旦我的脚本登录到帐户,...
我在鸦片中发现了与下面相同的错误