Java 当Android和;IOS XPath已定义
我是Appium的新手,计划使用Appium page factory在android和IOS中使用相同的脚本执行测试,目前我正在android设备上工作,因此我将IOS xpath保持为null,当我执行脚本时抛出错误“userNameTextBox=null”。我这里有两个问题 1.基于什么标准,Appium页面工厂将知道选择android或IOS的xpath 2.虽然我使用的是Android驱动程序,但为什么在我的代码中会抛出“userNameTextBox为Null”Java 当Android和;IOS XPath已定义,java,selenium,appium,appium-android,Java,Selenium,Appium,Appium Android,我是Appium的新手,计划使用Appium page factory在android和IOS中使用相同的脚本执行测试,目前我正在android设备上工作,因此我将IOS xpath保持为null,当我执行脚本时抛出错误“userNameTextBox=null”。我这里有两个问题 1.基于什么标准,Appium页面工厂将知道选择android或IOS的xpath 2.虽然我使用的是Android驱动程序,但为什么在我的代码中会抛出“userNameTextBox为Null” private
private AndroidDriver<AndroidElement> driver;
@AndroidFindBy(className = "android.widget.EditText")
@iOSBy(className = "")
private AndroidElement userNameTextBox;
public void login(String userName, String password) throws InterruptedException {
userNameTextBox.sendKeys(userName);
}
public static void main(String[] args) throws IOException, InvalidFormatException, InterruptedException {
LaunchApplication.launchApp("samsungtablet");--This code will launch the app based on device passed
LoginPage lp= new LoginPage();
lp.login("test", "test");---Failing here
}
私有AndroidDriver;
@AndroidFindBy(className=“android.widget.EditText”)
@iOSBy(className=”“)
私有AndroidElement用户名文本框;
公共无效登录(字符串用户名、字符串密码)引发InterruptedException{
userNameTextBox.sendKeys(用户名);
}
公共静态void main(字符串[]args)引发IOException、InvalidFormatException、InterruptedException{
LaunchApplication.launchApp(“samsungtablet”);--此代码将根据传递的设备启动应用程序
LoginPage lp=新的LoginPage();
lp.login(“test”、“test”);---此处失败
}
以前,应用程序没有正确设置驱动程序实例,因此我得到的xpath值为null,我在下面添加了从launchapplication类调用驱动程序的函数,它可以处理这个问题
public void login(String userName, String password) throws InterruptedException {
this.driver = LaunchApplication.driver;
PageFactory.initElements(new AppiumFieldDecorator(driver), this);
userNameTextBox.sendKeys(userName);
}
显示初始化和/或传递到驱动程序的代码…谢谢你的提示,这就是问题所在,我修复了,它成功了