问题
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:
Argument was an invalid selector
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:
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.
来源:https://stackoverflow.com/questions/39381490/an-element-could-not-be-located-on-the-page-using-the-given-search-parameters