如何解决无法调用 pages.signInPage.eneterPassword(string) 因为 this.signIn 为 null
执行步骤 signIn1.enterPassword("@test.com") 时出现错误。错误是无法调用 pages.signInPage.eneterPassword(string) 因为 this.signIn1 为空
它运行步骤 Assert.assertTrue(signIn1.lbl_logo.isdisplayed());没有任何错误。
知道为什么我会收到 this.signIn1 null 错误吗?
环境:带有黄瓜、maven、junit 的 Appium 项目
基本设置
package pages;
import java.net.URL;
import org.openqa.selenium.remote.DesiredCapabilities;
import com.google.common.collect.ImmutableMap;
import io.appium.java_client.AppiumDriver;
import io.appium.java_client.MobileElement;
import io.appium.java_client.android.AndroidDriver;
public class BaseSetUp {
SurveyPage list;
AccountPage acc;
public AppiumDriver<MobileElement> driver = null;
public void driverSetUp() throws Exception {
DesiredCapabilities cap = new DesiredCapabilities();
cap.setCapability("deviceName","xxxx");
cap.setCapability("udid","9888d3465441484649");
cap.setCapability("platformName","Android");
cap.setCapability("platformVersion","9");
cap.setCapability("appPackage","xxxxx");
cap.setCapability("appActivity","xxxxx");
cap.setCapability("noreset","true");
cap.setCapability("appium:chromeOptions",ImmutableMap.of("w3c",false));
URL url = new URL("http://127.0.0.1:4723/wd/hub");
driver = new AndroidDriver<>(url,cap);
}
public void signOut()
{
list = new SurveyPage(driver);
acc = new AccountPage(driver);
list.viewAccount();
acc.signOut();
}
public void driverClose()
{
driver.quit();
}
}
import org.openqa.selenium.support.PageFactory;
import io.appium.java_client.AppiumDriver;
import io.appium.java_client.MobileElement;
import io.appium.java_client.pagefactory.AndroidFindBy;
import io.appium.java_client.pagefactory.AppiumFieldDecorator;
import io.appium.java_client.pagefactory.iOSXCUITFindBy;
public class SignInPage {
AppiumDriver<MobileElement> driver=null;
public SignInPage(AppiumDriver<MobileElement> driver) {
this.driver = driver;
PageFactory.initElements(new AppiumFieldDecorator(driver),this);
}
@AndroidFindBy(xpath = "//android.widget.EditText[@index='1']")
@iOSXCUITFindBy(id = "")
public MobileElement txt_email;
@AndroidFindBy(xpath = "//android.widget.EditText[@index='3']")
@iOSXCUITFindBy(id = "")
public MobileElement txt_password;
@AndroidFindBy(xpath = "//android.widget.TextView[@index='2']")
@iOSXCUITFindBy(id = "")
public MobileElement lbl_email_validations;
@AndroidFindBy(xpath = "//android.widget.TextView[@index='5']")
@iOSXCUITFindBy(id = "")
public MobileElement lbl_password_validations;
@AndroidFindBy(xpath = "//android.widget.ImageView[@index='0']")
@iOSXCUITFindBy(id = "")
public MobileElement lbl_logo;
public void enterUsername(String username) {
txt_email.sendKeys(username);
}
public void enterPassword(String password) {
txt_password.sendKeys(password);
}
public void clickSignIn() {
btn_signin.click();
}
}
验证主页测试
package steps;
import org.junit.Assert;
import io.cucumber.java.en.Then;
import io.cucumber.java.en.When;
import pages.BaseSetUp;
import pages.SignInPage;
public class VerifyHomePage extends BaseSetUp {
SignInPage signIn1 ;
@When("I am on home page")
public void i_am_on_home_page() throws Exception {
driverSetUp();
Thread.sleep(5000);
}
@Then("I see the logo")
public void i_see_the_logo() throws Exception {
signIn1=new SignInPage(driver);
Assert.assertTrue(signIn1.lbl_logo.isdisplayed());
}
@When("I Enter @test.com address")
public void i_enter_test_com_address() {
signIn1.enterPassword("@test.com");
}
@Then("I verify the <validation Message> in step")
public void i_verify_the_validation_message_in_step() {
if (signIn1.lbl_email_validations.isdisplayed())
{
String actualEmailValidation= signIn1.lbl_email_validations.getText();
String expectedEmailValidation = "required Field";
Assert.assertEquals(actualEmailValidation,expectedEmailValidation);
}
else
{
System.out.println("Incorrect email format validations");
}
driver.close();
}
登录测试
import static org.junit.Assert.assertTrue;
import io.cucumber.java.en.Given;
import io.cucumber.java.en.Then;
import io.cucumber.java.en.When;
import pages.SignInPage;
import pages.SurveyPage;
import pages.BaseSetUp;
public class Login extends BaseSetUp {
SignInPage signIn2;
SurveyPage list;
@Given("User is on home page")
public void user_is_on_home_page() throws Exception {
driverSetUp();
}
@When("Enter Email")
public void enter_email() throws Exception {
signIn2 = new SignInPage(driver);
Thread.sleep(5000);
signIn2.enterUsername("xxxxx");
}
@When("Enter Password")
public void enter_password() {
signIn2.enterPassword("xxxxx");
}
@When("Click Sign in")
public void click_sign_in() {
signIn2.clickSignIn();
}
@Then("User should see the Survey List Page")
public void user_should_see_the_survey_list_page() throws Exception {
signIn2.clickSignIn();
list = new SurveyPage(driver);
Thread.sleep(5000);
assertTrue(list.surveyListTitle().contains("Surveys list"));
signOut();
driverClose();
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。