我正在使用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条错误消息:
参数是一个无效的选择器
使用给定的搜索参数无法在页面上找到元素。
我不确定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 ]"))点击();
答案 0 :(得分:0)
当您使用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.AWS设备服务器场使用Appium版本1.4.10,因此请确保您在本地使用相同版本,以便上传后不会出现任何错误。