试验方法记录:
使用Java+appium,查找屏幕外控件,控制seekbar移动。
1.查找并点击Setting中的“辅助功能”;driver.findElementByAndroidUIAutomator
2.滑动“显示”中的seekbar ;driver.swipe(startX, startY, endX, endY, duration)
试验用的老平板,这种系统应用运行的比第三方应用流畅很多。
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.openqa.selenium.By;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.remote.DesiredCapabilities;
import java.net.MalformedURLException;
import java.net.URL;
import io.appium.java_client.android.AndroidDriver;
public class TestSettingsDemo {
public AndroidDriver<?> appiumDriver;
@Before
public void setUp() throws MalformedURLException {
DesiredCapabilities desiredCapabilities = new DesiredCapabilities();
desiredCapabilities.setCapability("platformVersion","5.1.1");
desiredCapabilities.setCapability("platformName","Android");
desiredCapabilities.setCapability("deviceName","G0B0ME036482001L");
desiredCapabilities.setCapability("appPackage","com.android.settings");
desiredCapabilities.setCapability("appActivity",".Settings");
desiredCapabilities.setCapability("noReset","true");
appiumDriver=new AndroidDriver<>(new URL("http://127.0.0.1:4723/wd/hub"),desiredCapabilities);
}
@Test
public void test_scroll(){
//滚动查找“辅助功能”并点击进去
appiumDriver.findElementByAndroidUIAutomator("new UiScrollable(new UiSelector().scrollable(true)).scrollIntoView(new UiSelector().text(\"辅助功能\"))").click();
}
@Test
public void test_seekBar(){
appiumDriver.findElement(By.xpath("//android.widget.TextView[@text='显示']")).click();
WebElement seekBar = appiumDriver.findElement(By.id("com.android.settings:id/f_seekbar"));
//获取控件Y坐标
int yNow=seekBar.getLocation().getY();
//获取控件宽度,这里是因为等于屏幕宽才在之后当坐标用
int xStart=seekBar.getSize().width;
appiumDriver.swipe(xStart/4,yNow,3*xStart/4,yNow,3000);
}
@After
public void tear_down(){
appiumDriver.quit();
}
}
效果记录: