为了账号安全,请及时绑定邮箱和手机立即绑定

appium 的此会话问题不支持定位器策略“css 选择器”

appium 的此会话问题不支持定位器策略“css 选择器”

jeck猫 2022-07-06 19:00:44
由于我是移动自动化的新手,我一直在尝试使用 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);}@Testpublic void testCal() throws Exception {    WebElement two = driver.findElement(By.name("2"));    two.click();}@AfterClasspublic void teardown() {}我正在使用最新的稳定依赖项。 io.appium java-client 7.0.0 和 org.testng testng 6.14.3FAILED: testCalorg.openqa.selenium.InvalidSelectorException: Locator Strategy 'css selector' is not supported for this sessionFor documentation on this error, please visit: https://www.seleniumhq.org/exceptions/invalid_selector_exception.htmlDriver info: org.openqa.selenium.remote.RemoteWebDriverCapabilities {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}
查看完整描述

4 回答

?
眼眸繁星

TA贡献1873条经验 获得超9个赞

Appium 不是 Selenium:它们都使用 JSON 有线协议实现并且具有相似的 API,但并不相同:

原生安卓应用支持的定位器策略:

  • id(resource-id 查看属性);

  • accessbilityId(内容描述视图属性);

  • uiAutomator (更好地阅读UiSelector);

  • className(UI 组件类型);

  • XPath。

因此,您不能By.name对 Android 驱动程序会话使用定位器策略,它不受支持。

为方便起见,我建议在 Appium 原生测试中使用MobileBy代替By:您将获得正确的选项。


查看完整回答
反对 回复 2022-07-06
?
largeQ

TA贡献2039条经验 获得超7个赞

我在 2020 年 2 月 3 日尝试了这种方法,并且能够成功执行。我必须做出的改变是将 io.appium 更新到 7.2.0。


我的案例/测试中的先决条件:Windows 机器,创建 Nexus S AVD,启动 Appium 和 AVD。


最重要的是


URL url = new URL("http://127.0.0.1:4723/wd/hub");

driver = new AndroidDriver<MobileElement>(url, capabilities);

MobileElement two =(MobileElement)driver.findElement(By.id("com.android.calculator2:id/digit_9"));   

two.click();


查看完整回答
反对 回复 2022-07-06
?
青春有我

TA贡献1784条经验 获得超8个赞

By.name("text")从此被删除Appium v1.5.0。


此外,Appium 不支持原生应用程序中不支持cssSelector像 Selenium 中存在的策略 + 方法,因为 Android 的底层单元测试框架不支持这些方法,即.getAttribute("color/background")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();


查看完整回答
反对 回复 2022-07-06
?
当年话下

TA贡献1890条经验 获得超9个赞

始终使用类名和文本名来创建 xpath。


const loginbutton=await driver.$("//android.widget.TextView[@text='login']")



await loginbutton.click()

驱动来自能力


class name --> android.widget.TextView


text name -->login


所以总是使用类名和文本名来创建一个更好更好的 xpath。


适用于所有 android+appium+wdio


查看完整回答
反对 回复 2022-07-06
  • 4 回答
  • 0 关注
  • 231 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信