java - appium 的此 session 问题不支持定位器策略 'css selector'

标签 java maven selenium testng appium

由于我是移动自动化的新手,所以我一直在尝试使用 appium maven 和 eclipse 运行简单的 Activity 。但是当我尝试运行计算器应用程序时打开但无法访问元素。

这是我用来运行一个简单计算器的代码

  @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 测试 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 有线协议(protocol)实现并且具有相似的 API,但不相同:

原生 android 应用程序支持的定位器策略:

  • id(资源id View 属性);
  • accessbilityId(content-desc View 属性);
  • uiAutomator(最好阅读 UiSelector );
  • className(ui组件类型);
  • XPath。

所以你不能为Android驱动 session 使用By.name定位器策略,它不受支持。

为了简单起见,我建议在 Appium native 测试中使用 MobileBy 代替 By:您将获得正确的选项。

关于java - appium 的此 session 问题不支持定位器策略 'css selector',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54861110/

相关文章:

java - 编写汇编程序的替代技术

java - Hibernate JPQL 返回 count(*) 查询的多个结果

git - 如何避免 Maven 和 CI 的提交/发布循环?

spring - 使用 maven 和 tomcat 运行 spring mvc-basic 示例

maven:是否可以通过使用命令行选项或环境变量来覆盖本地存储库的位置?

java - 为什么任何 try/catch 过去的 while 循环都会导致空指针异常

java - 在 Java 中将 MySQL 数据库项存储在 ArrayList 中

java - 如何获取 Groovy 生成的 java 源代码

java - WebElement.findElement 方法在 WebDriver 范围内查找元素

java - 方法 verifyTrue(boolean) 未定义类型