'An element could not be located on the page using the given search parameters' on Appium while uploading to AWS Device Farm

匿名 (未验证) 提交于 2019-12-03 01:45:01

问题:

I am using a sample app from AWS Github

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

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();     } } 

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

  1. Argument was an invalid selector

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

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.

Here's a zoom in look of it

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:

  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 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 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.



易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!