gpt4 book ai didi

java - 如何在Appium中获取和存储列表数据以及如何点击特定的搜索记录

转载 作者:行者123 更新时间:2023-11-29 04:15:12 25 4
gpt4 key购买 nike

enter image description here
我正在尝试获取 Year 数据列表并将其存储在列表变量中,但无法存储所有数据。

同时我还想搜索特定年份,如果找不到年份,那么我想滚动并在列表中再次搜索。

我还附上了我在应用程序中的元素的屏幕截图。

这是我在列表变量中存储和搜索记录列表的代码

public void fetchVehicleListAndClickOnYear(String year) {

java.util.List<MobileElement> vehicleList =driver.findElementsById(packageName+":id/title");

for (int i=0;i<= vehicleList.size();i++) {
String actuallist = vehicleList.get(i).getText();
System.out.println("Print vehicle year list " +actuallist);
if(actuallist.equals(year)) {
driver.findElementByName(year).click();
} else {
Utils.scrollDown(driver);
}
}
}

public void fillVehicleInfoOnSignup(String Vehicle_Year) {

vehicleYearTextBox.click();
Utils.PauseTestExecution(2);
fetchVehicleListAndClickOnYear(Vehicle_Year);

}



For scrolling code

public static void scrollDown(AndroidDriver<MobileElement> driver) {
//if pressX was zero it didn't work for me
int pressX = driver.manage().window().getSize().width / 2;
// 4/5 of the screen as the bottom finger-press point
int bottomY = driver.manage().window().getSize().height * 4/5;
// just non zero point, as it didn't scroll to zero normally
int topY = driver.manage().window().getSize().height / 8;
//scroll with TouchAction by itself
scroll(pressX, bottomY, pressX, topY,driver);
}

public static void scroll(int fromX, int fromY, int toX, int toY,AndroidDriver<MobileElement> driver) {
TouchAction touchAction = new TouchAction(driver);
new TouchAction(driver).press(PointOption.point(fromX, fromY)).waitAction().moveTo(PointOption.point(toX, toY)).release().perform();
}

显示错误

警告:发生了非法的反射访问操作警告:net.sf.cglib.core.ReflectUtils$1(文件:/Users/daffolapmac-73/eclipse-workspace/Wapanda_Driver_Automation/libfiles/cglib-3.2.8.jar)对方法 java.lang.ClassLoader 的非法反射访问。 defineClass(java.lang.String,byte[],int,int,java.security.ProtectionDomain)警告:请考虑将此报告给 net.sf.cglib.core.ReflectUtils$1 的维护者警告:使用 --illegal-access=warn 启用进一步非法反射访问操作的警告警告:所有非法访问操作将在未来的版本中被拒绝打印车辆年表2018打印车辆年表 2000打印车辆年表 1984打印车辆年表 1967打印车辆年表 1952打印车辆年表 1942打印车辆年表 1941java.lang.IndexOutOfBoundsException:索引 7 超出范围,长度为 7 在 java.base/jdk.internal.util.Preconditions.outOfBounds(Preconditions.java:64) 在 java.base/jdk.internal.util.Preconditions.outOfBoundsCheckIndex(Preconditions.java:70) 在 java.base/jdk.internal.util.Preconditions.checkIndex(Preconditions.java:248) 在 java.base/java.util.Objects.checkIndex(Objects.java:372) 在 java.base/java.util.ArrayList.get(ArrayList.java:440) 在 com.wapanda.pages.DriverSignUpPages.fetchVehicleListAndClickOnYear(DriverSignUpPages.java:261) 在 com.wapanda.pages.DriverSignUpPages.fillVehicleInfoOnSignup(DriverSignUpPages.java:275) 在 com.wapanda.tests.ValidateDriverProcess.validateDriverSignupProcess(ValidateDriverProcess.java:108) 在 java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0( native 方法) 在 java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 在 java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 在 java.base/java.lang.reflect.Method.invoke(Method.java:564) 在 org.testng.internal.MethodInvocationHelper.invokeMethod(MethodInvocationHelper.java:124) 在 org.testng.internal.Invoker.invokeMethod(Invoker.java:580) 在 org.testng.internal.Invoker.invokeTestMethod(Invoker.java:716) 在 org.testng.internal.Invoker.invokeTestMethods(Invoker.java:988) 在 org.testng.internal.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:125) 在 org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:109) 在 org.testng.TestRunner.privateRun(TestRunner.java:648) 在 org.testng.TestRunner.run(TestRunner.java:505) 在 org.testng.SuiteRunner.runTest(SuiteRunner.java:455) 在 org.testng.SuiteRunner.runSequentially (SuiteRunner.java:450) 在 org.testng.SuiteRunner.privateRun(SuiteRunner.java:415) 在 org.testng.SuiteRunner.run(SuiteRunner.java:364) 在 org.testng.SuiteRunnerWorker.runSuite(SuiteRunnerWorker.java:52) 在 org.testng.SuiteRunnerWorker.run(SuiteRunnerWorker.java:84) 在 org.testng.TestNG.runSuitesSequentially (TestNG.java:1208) 在 org.testng.TestNG.runSuitesLocally(TestNG.java:1137) 在 org.testng.TestNG.runSuites(TestNG.java:1049) 在 org.testng.TestNG.run(TestNG.java:1017) 在 org.testng.remote.AbstractRemoteTestNG.run(AbstractRemoteTestNG.java:114) 在 org.testng.remote.RemoteTestNG.initAndRun(RemoteTestNG.java:251) 在 org.testng.remote.RemoteTestNG.main(RemoteTestNG.java:77)

最佳答案

错误提示“java.lang.IndexOutOfBoundsException:索引 7 越界,长度为 7”。要修复它,请按以下方式更正 for 循环(“<”替换“<=”)。代码如下所示:

for (int i=0;i<vehicleList.size();i++) {
String actuallist = vehicleList.get(i).getText();

https://docs.oracle.com/javase/7/docs/api/java/lang/IndexOutOfBoundsException.html

修改代码以返回显示年份的列表。 (注意:代码可能会被优化为具有单个循环。由于滚动逻辑不明确,我保持原样)

public List<String> fetchVehicleListAndClickOnYear(String year) {

java.util.List<MobileElement> vehicleList =driver.findElementsById(packageName+":id/title");

java.util.List<String> displayedYears = new ArrayList<>();
//logic to add displayed years to list
for (MobileElement yearEl: vehicleList) {
displayedYears.add(yearEl.getText());
}

//logic to click
for (int i=0;i< vehicleList.size();i++) {
String actuallist = vehicleList.get(i).getText();
System.out.println("Print vehicle year list " +actuallist);
if(actuallist.equals(year)) {
driver.findElementByName(year).click();
} else {
Utils.scrollDown(driver);
}
}
return displayedYears;
}

关于java - 如何在Appium中获取和存储列表数据以及如何点击特定的搜索记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52852824/

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