由于我是移动自动化的新手,所以我一直试图使用appium maven和eclipse运行简单的活动。但是,当我尝试运行“计算器”应用程序时打开,但是元素不可访问。
这是我用来运行简单计算器的代码
@BeforeClass
public void setUp() throws MalformedURLException {
DesiredCapabilities capabilities = new DesiredCapabilities();
capabilities.setCapability("BROWSER_NAME", "Android");
capabilities.setCapability("VERSION", "4.4.2");
capabilities.setCapability("deviceName", "Emulator");
capabilities.setCapability("platformName", "Android");
capabilities.setCapability("appPackage", "com.android.calculator2");
capabilities.setCapability("appActivity", "com.android.calculator2.Calculator");
driver = new RemoteWebDriver(new URL("http://0.0.0.0:4723/wd/hub"), capabilities);
}
@Test
public void testCal() throws Exception {
WebElement two = driver.findElement(By.name("2"));
two.click();
}
@AfterClass
public void teardown() {
}
我正在使用最新的稳定依赖项。io.appium java-client 7.0.0和org.testng testng 6.14.3
FAILED: testCal
org.openqa.selenium.InvalidSelectorException: Locator Strategy 'css
selector' is not supported for this session
For documentation on this error, please visit:
https://www.seleniumhq.org/exceptions/invalid_selector_exception.html
Driver info: org.openqa.selenium.remote.RemoteWebDriver
Capabilities {BROWSER_NAME: Android, VERSION: 4.4.2, appActivity:
com.android.calculator2.Cal..., appPackage: com.android.calculator2,
databaseEnabled: false, desired: {BROWSER_NAME: Android, VERSION: 4.4.2,
appActivity: com.android.calculator2.Cal..., appPackage:
com.android.calculator2, deviceName: Emulator, platformName: android},
deviceManufacturer: HUAWEI, deviceModel: FLA-LX2, deviceName:
HXT7N18521000819, deviceScreenSize: 1080x2160, deviceUDID:
HXT7N18521000819, javascriptEnabled: true, locationContextEnabled: false,
networkConnectionEnabled: true, platform: LINUX, platformName: LINUX,
platformVersion: 8.0.0, takesScreenshot: true, warnings: {},
webStorageEnabled: false}
Session ID: a604a166-3c0d-4e9c-a3e4-9b1ea734bee6
*** Element info: {Using=name, value=2}
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown
Source)
at java.lang.reflect.Constructor.newInstance(Unknown Source)
at...
Appium不是Selenium:它们都使用JSON Wire协议实现,并且具有相似的API,但不是相同的API:
[本机android应用程序支持的定位器策略:
因此您不能在Android驱动程序会话中使用By.name
定位器策略,不支持。
[为了简便起见,我建议在Appium本机测试中使用MobileBy
代替By
:您将获得适当的选项。
[By.name("text")
从Appium v1.5.0
开始被删除。
也仅添加cssSelector
策略+ Selenium中存在的类似getAttribute("color/background")
的方法在本机应用程序的Appium中不受支持,因为Android的基础单元测试框架(即UIAutomator
)不支持这些方法。
您可以使用以下选项单击计算器的数字
driver.findElement(By.id(“com.android.calculator2:id/digit5”)).click();
driver.findElement(By.xpath(“//android.widget.Button[contains(@resource-id,'digit5') and @text='5']”)).click();
driver.findElementByAccessibilityId(“plus”).click();
driver.findElement(By.xpath(“//android.widget.Button[@text='5']”)).click();