Appium-本机Android应用程序-滚动(Java)
我正在尝试使用Appium在Android上进行自动测试。 这是我的密码Appium-本机Android应用程序-滚动(Java),java,android,appium,Java,Android,Appium,我正在尝试使用Appium在Android上进行自动测试。 这是我的密码 public class TestAndroidRealDevice { private static AndroidDriver wd; Dimension size; @Before public void setUp() throws Exception { DesiredCapabilities capabilities = new DesiredCapabilities(); capab
public class TestAndroidRealDevice {
private static AndroidDriver wd;
Dimension size;
@Before
public void setUp() throws Exception {
DesiredCapabilities capabilities = new DesiredCapabilities();
capabilities.setCapability(MobileCapabilityType.APPIUM_VERSION, "1.6.4-beta.2");
capabilities.setCapability(MobileCapabilityType.PLATFORM_NAME, "Android");
capabilities.setCapability(MobileCapabilityType.PLATFORM_VERSION, "6.0.1");
capabilities.setCapability(MobileCapabilityType.DEVICE_NAME, "Samsung Galaxy S6");
capabilities.setCapability(MobileCapabilityType.AUTOMATION_NAME, "Appium");
capabilities.setCapability(MobileCapabilityType.FULL_RESET, true);
capabilities.setCapability(MobileCapabilityType.APP, "/Users/app-t3st-release.apk");
wd = new AndroidDriver(new URL("http://0.0.0.0:4723/wd/hub"), capabilities);
wd.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
Thread.sleep(3000);
}
@Test
public void loginTest() throws Exception {
WebElement login = wd.findElement(By.id("proceedBtn"));
login.click();
wd.findElement(By.id("customerBigBtn")).click();
wd.findElement(By.id("haveAPassAlreadyBtn")).click();
wd.findElement(By.id("countrySpinnerContainer")).click();
for (int i=0; i<4; i++)
{
Thread.sleep(2000);
if (wd.findElement(By.xpath("//android.widget.ListView[contains(text(), 'Poland (+48)')]")).isDisplayed()) {
wd.findElement(By.xpath("//android.widget.ListView[contains(text(), 'Poland (+48)')]")).click();
break;
}
else
{
do {
horizontalScroll();
} while (wd.findElement(By.xpath("//android.widget.ListView[contains(text(), 'Poland (+48)')]")).isDisplayed());
}
}
}
public void horizontalScroll()
{
WebElement el = wd.findElementByClassName("android.widget.ListView");
el.getSize();
int x_start=(int)(size.width*0.60);
int x_end=(int)(size.width*0.30);
int y=130;
wd.swipe(x_start,y,x_end,y,4000);
}
@After
public void tearDown () throws Exception {
wd.quit();
}
在这个屏幕上,我有一个下拉菜单,我想在这里找到并选择特定的国家。为此,我应该滚动(滑动)下拉菜单-直到我的国家(我想从列表中选择)在屏幕上可见
但是,不幸的是,这里出了问题;(
但我得到一个错误,我无法使用提供的策略找到一个元素,并且我的测试失败,没有任何滚动操作来找到这个元素
有什么想法吗?我应该改变什么?
Thx.尝试滚动到所需元素:
MobileElement listItem = list
.findElement(MobileBy
.AndroidUIAutomator("new UiScrollable(new UiSelector()).scrollIntoView("
+ "new UiSelector().text(\"listItem text\"));"));
如果元素不可见,则显示的将引发异常 若我们想检查元素在页面上是否可用,我们必须使用findElements,然后是它的大小。如下所示
driver.findElements(byVal).size() != 0
若大小不等于零,则表示它在页面上可用,我们可以
检查isDisplayed以了解该元素的可见性
因此,试着在(inti=0;i)的位置编写如下代码
driver.findElements(byVal).size() != 0
do {
List<WebElement> allOptions = wd.findElements(By.xpath("//android.widget.ListView"));
for (WebElement webElement : allOptions) {
if (webElement.getText().contains("Poland")) {
webElement.click();
flag = true;
break;
}
}
if (!flag) {
horizontalScroll();
}
} while (!flag);