微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

无法调用 pages.signInPage.eneterPassword(string) 因为 this.signIn 为 null

如何解决无法调用 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 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?