'使用给定的搜索参数无法在页面上找到元素'在上传到AWS Device Farm时在Appium上

时间:2016-09-08 02:01:04

标签: amazon-web-services appium

我正在使用AWS Github的示例应用

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

我有Appium Inspector录制的Appium脚本。

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条错误消息:

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

  2. 使用给定的搜索参数无法在页面上找到元素。

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

    我想在哪里搜索参数出错。谢谢。

    这里放大了一下

      

    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 ]"))点击();

1 个答案:

答案 0 :(得分:0)

  1. 当您使用AWS Device Farm时,您无需设置DesiredCapabilities和设备farme来处理它。 所以从上面的代码中删除下面提到的代码 -

    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. 2.AWS设备服务器场使用Appium版本1.4.10,因此请确保您在本地使用相同版本,以便上传后不会出现任何错误。