【问题标题】:Unable to get location of object present in screen - Appium (Android)无法获取屏幕中存在的对象的位置 - Appium (Android)
【发布时间】:2019-08-20 23:10:54
【问题描述】:

我无法使用 Appium 获取 Android 屏幕中元素的位置。

我查看了 http://appium.io/docs/en/commands/element/attributes/location/ 上关于 getLocation() 方法的文档,但没有得到元素位置的信息。

我尝试了整个对象:

console.log("Get location object: " + driver.getLocation('android=new UiSelector().resourceId("io.appium.android.apis:id/text"))'));

并带有特定值(X):

console.log("Get location parameter 'x': " + driver.getLocation('android=new UiSelector().resourceId("io.appium.android.apis:id/text"))').x); 

我期望响应中的 X 和 Y 值,但我在控制台中收到以下值:

获取位置对象:[object Object]

获取位置参数'x':undefined

【问题讨论】:

    标签: javascript android appium webdriver-io


    【解决方案1】:

    我认为文档的示例不正确。它应该像this 一样工作:

    const text = browser.$('android=new UiSelector().resourceId("io.appium.android.apis:id/text"))')
    const location = text.getLocation();
    console.log(location); // outputs: { x: ..., y: ... }
    

    您首先需要获取一个元素对象,然后使用它的 API 来获取位置。

    browser.getLocation()是获取GPS坐标

    【讨论】:

    • 我不能使用 $ 选择器,而不是我使用的:const text = driver.getLocation('android=new UiSelector().resourceId("io.appium.android.apis:id/text"))'); const location = text.getLocation(); console.log(location); 我在控制台上得到了这个 [Object Object]
    • 我编辑了代码以符合您的说明,但我仍然收到 [Object Object],我对此进行了研究并实施 JSON.parse 以尝试读取 JSON 对象(因为这是预期的基于文档的结果:appium.io/docs/en/commands/element/attributes/location#response) 但我收到“SyntaxError: Unexpected token o in JSON at position 1”错误消息。
    • 这是代码: const text = driver.$('android=new UiSelector().resourceId("io.appium.android.apis:id/text"))') const location = text.getLocation(); console.log('位置' + 位置); var obj = JSON.parse(位置); console.log(obj)
    • 你可以试试这样: const xLocation = text.getLocation('x');控制台.log(xLocation); // 输出:150
    【解决方案2】:

    您可以尝试使用 Appium Studio。这样获取元素的位置就很简单了

    String locationX = client.elementGetProperty("NATIVE", "your-xpath-here", 0, "X");
    String locationY = client.elementGetProperty("NATIVE", "your-xpath-here", 0, "Y");
    

    这是分别获取X和Y坐标。详细解释可以看文档here

    【讨论】:

    • 感谢您的手术,但实际上我正面临着在 javascript 上获取元素的位置,他们正在使用 Java。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-05
    • 2017-06-17
    • 2019-02-06
    • 1970-01-01
    相关资源
    最近更新 更多