上传到 AWS Device Farm 时在 Appium 上“无法使用给定的搜索参数在页面上定位元素" [英] 'An element could not be located on the page using the given search parameters' on Appium while uploading to AWS Device Farm

查看:27
本文介绍了上传到 AWS Device Farm 时在 Appium 上“无法使用给定的搜索参数在页面上定位元素"的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在使用来自 AWS Github 的示例应用程序

I am using a sample app from AWS Github

https://github.com/awslabs/aws-device-farm-sample-app-for-android

我有 Appium Inspector 记录的 Appium 脚本.

I have Appium script recorded by Appium Inspector.

import io.appium.java_client.AppiumDriver;
import org.openqa.selenium.remote.DesiredCapabilities;
import java.net.URL;

public class AppiumTest {
    public static void main(String[] args) {
        DesiredCapabilities capabilities = new DesiredCapabilities();
        capabilities.setCapability("appium-version", "1.0");
        capabilities.setCapability("platformName", "Android");
        capabilities.setCapability("platformVersion", "5.0.2");
        capabilities.setCapability("deviceName", "HTC");
        capabilities.setCapability("app", "/Users/Kelvin/Dropbox/app-debug.apk");
        wd = new AppiumDriver(new URL("http://127.0.0.1:4723/wd/hub"), capabilities);
        wd.manage().timeouts().implicitlyWait(60, TimeUnit.SECONDS);
        //Click hamburger menu
        wd.findElement(By.xpath("//android.widget.LinearLayout[1]/android.widget.FrameLayout[1]/android.widget.LinearLayout[1]/android.widget.FrameLayout[1]/android.support.v4.widget.DrawerLayout[1]/android.widget.LinearLayout[1]/android.widget.LinearLayout[1]/android.view.View[1]/android.widget.ImageButton[1]")).click();
        //Go to 'Login Page'
        wd.findElement(By.xpath("//android.widget.LinearLayout[1]/android.widget.FrameLayout[1]/android.widget.LinearLayout[1]/android.widget.FrameLayout[1]/android.support.v4.widget.DrawerLayout[1]/android.widget.RelativeLayout[1]/android.support.v7.widget.RecyclerView[1]/android.widget.FrameLayout[8]")).click();
        //Input username: admin
        wd.findElement(By.xpath("//android.widget.LinearLayout[1]/android.widget.FrameLayout[1]/android.widget.LinearLayout[1]/android.widget.FrameLayout[1]/android.support.v4.widget.DrawerLayout[1]/android.widget.LinearLayout[1]/android.widget.FrameLayout[1]/android.widget.FrameLayout[1]/android.widget.RelativeLayout[1]/android.widget.EditText[1]")).sendKeys("admin");
        //Input password: password
        wd.findElement(By.xpath("//android.widget.LinearLayout[1]/android.widget.FrameLayout[1]/android.widget.LinearLayout[1]/android.widget.FrameLayout[1]/android.support.v4.widget.DrawerLayout[1]/android.widget.LinearLayout[1]/android.widget.FrameLayout[1]/android.widget.FrameLayout[1]/android.widget.RelativeLayout[1]/android.widget.EditText[2]")).sendKeys("password");
        //Click login
        wd.findElement(By.xpath("//android.widget.LinearLayout[1]/android.widget.FrameLayout[1]/android.widget.LinearLayout[1]/android.widget.FrameLayout[1]/android.support.v4.widget.DrawerLayout[1]/android.widget.LinearLayout[1]/android.widget.FrameLayout[1]/android.widget.FrameLayout[1]/android.widget.RelativeLayout[1]/android.widget.Button[1]")).click();

        wd.close();
    }
}

在我用 MAVEN 打包并上传到 AWS Device Farm 之后返回 2 条错误消息:

After I package it with MAVEN and upload to AWS Device Farm 2 error messages returned:

  1. 参数是一个无效的选择器

  1. Argument was an invalid selector

无法使用给定的搜索参数在页面上定位元素.

An element could not be located on the page using the given search parameters.

我不确定 Appium Inspector 中的脚本如何在 AWS Device Farm 上运行,但我可以在 Appium Inspector 中重播".

I'm not sure how doesn't script from Appium Inspector works on AWS Device Farm, but I can "Replay" inside Appium Inspector.

我想知道我的搜索参数哪里出错了.谢谢.

I would like to where do my search parameters go wrong. Thank you.

这是一个放大的外观

wd.findElement(By.xpath("//android.widget.LinearLayout[1]/android.widget.FrameLayout[1]/android.widget.LinearLayout[1]/android.widget.FrameLayout[1]/android.support.v4.widget.DrawerLayout[1]/android.widget.LinearLayout[1]/android.widget.LinearLayout[1]/android.view.View[1]/android.widget.ImageButton[1]")).click();

wd.findElement(By.xpath("//android.widget.LinearLayout[1 ]/android.widget.FrameLayout[1]/android.widget.LinearLayout[1]/android.widget.FrameLayout[1]/android.support.v4.widget.DrawerLayout[1]/android.widget.LinearLayout[1]/android.widget.LinearLayout[1]/android.view.View[1]/android.widget.ImageButton[1]")).click();

推荐答案

  1. 当您使用 AWS Device Farm 时,您不需要设置 DesiredCapabilities 并且 device farme 会处理它.所以从你上面的代码中删除下面提到的代码 -

  1. When you are working AWS Device Farm you do not need to set DesiredCapabilities and device farme take care of it. So from your above code Remove the code mentioned below -

DesiredCapabilities 能力 = 新的 DesiredCapabilities();capabilities.setCapability("appium-version", "1.0");capabilities.setCapability("platformName", "Android");capabilities.setCapability("platformVersion", "5.0.2");capability.setCapability("deviceName", "HTC");capabilities.setCapability("app", "/Users/Kelvin/Dropbox/app-debug.apk");

DesiredCapabilities capabilities = new DesiredCapabilities(); capabilities.setCapability("appium-version", "1.0"); capabilities.setCapability("platformName", "Android"); capabilities.setCapability("platformVersion", "5.0.2"); capabilities.setCapability("deviceName", "HTC"); capabilities.setCapability("app", "/Users/Kelvin/Dropbox/app-debug.apk");

2.AWS 设备场使用 Appium 版本 1.4.10,因此请确保您在本地也使用相同的版本,以便上传后不会出现任何错误.

2.AWS Device farm uses Appium Version 1.4.10 so make sure locally also you use same version so that after uploading it will not give any errors.

这篇关于上传到 AWS Device Farm 时在 Appium 上“无法使用给定的搜索参数在页面上定位元素"的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆