gpt4 book ai didi

java - 使用@AndroidFindBy时元素为空

转载 作者:行者123 更新时间:2023-11-30 06:37:12 25 4
gpt4 key购买 nike

我正在开发跨平台脚本,并且正在使用页面对象模型。我使用 @AndroidFindBy(id = "")/@iosFindBy("") 注释来标识元素。我无法运行我的脚本,因为我遇到了空指针异常。

我调试了一下,发现该元素为Null。 (请引用截图) enter image description here

我在初始化期望的功能时已经初始化了我的驱动程序。但我不知道如何在驱动程序中查找该元素。

driver = new AndroidDriver<MobileElement>(url, desiredCapabilities);

当我只使用 AndroidDriver 并使用 时,代码工作正常,

driver.findElement(By.id(""))

但是当我尝试使用 @AndroidFindBy(id="") 运行时它失败了。我在哪里提到应该在哪里查找元素?任何提示或指导将不胜感激

最佳答案

我创建一个包含类实例化的主页面对象类,然后我创建的每个页面对象类都实现如下所示的基本页面对象类:

import java.util.concurrent.TimeUnit;

import org.openqa.selenium.support.PageFactory;

import io.appium.java_client.android.AndroidDriver;
import io.appium.java_client.android.AndroidElement;
import io.appium.java_client.pagefactory.AppiumFieldDecorator;

public class PageObject {

AndroidDriver<AndroidElement> driver;

public PageObject(AndroidDriver<AndroidElement> driver) {

this.driver = driver;
PageFactory.initElements(new AppiumFieldDecorator(driver, 30, TimeUnit.SECONDS), this);

}

}

您的问题可能很简单,因为您传递的类参数是硬编码的,可能传递给了错误的类。它应该是页面对象的类本身,因此是“this”

这是扩展上面页面对象的页面类的一部分:

import io.appium.java_client.android.AndroidDriver;
import io.appium.java_client.android.AndroidElement;
import io.appium.java_client.pagefactory.AndroidFindBy;

public class CalculatorPage extends PageObject {

public CalculatorPage(AndroidDriver<AndroidElement> driver) {
super(driver);
System.out.println("Calculator page class has been initialized");
}

@AndroidFindBy(id = "com.android.calculator2:id/formula")
AndroidElement formula;
@AndroidFindBy(id = "com.android.calculator2:id/result")
AndroidElement result;

public String getResult() {
String text = helper.getText(result, "Result");
if ("".equals(text))
text = helper.getText(formula, "Formula");
return text;
}

}

关于java - 使用@AndroidFindBy时元素为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45008625/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com