如何在远程机器上运行appium脚本?

时间:2015-03-31 13:12:35

标签: java client server appium selenium-grid

我有2台台式机,其中Appium脚本保存在机器1中,Appium安装在机器2中,Android设备也连接在机器2中。现在我想从机器1中取出脚本并在设备中执行连接在机器上2.如何实现这一点。请建议我。 下面的代码我能够运行相同的机器。我想在另一台机器上连接的Android设备上运行。两台机器的IP段都是同一段。

package com.appiumproj.test;

import io.appium.java_client.AppiumDriver;
import io.appium.java_client.android.AndroidDriver;
import io.appium.java_client.remote.MobileCapabilityType;
import java.net.MalformedURLException;
import java.net.URL;
import org.openqa.selenium.By;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.remote.DesiredCapabilities;
import org.openqa.selenium.support.ui.ExpectedConditions;
import org.openqa.selenium.support.ui.WebDriverWait;
import org.testng.annotations.*;

public class Appium {

AppiumDriver driver;

@BeforeClass
public void setUp() throws MalformedURLException{

     //Set up desired capabilities and pass the Android app-activity and app-package to Appium

   DesiredCapabilities capabilities = new DesiredCapabilities();
   capabilities.setCapability(MobileCapabilityType.VERSION, "5.0.2");
   capabilities.setCapability(MobileCapabilityType.PLATFORM_NAME, "Android");
   capabilities.setCapability(MobileCapabilityType.DEVICE_NAME,"ZX1D62FPVQ");
   capabilities.setCapability(MobileCapabilityType.APP_PACKAGE, "com.android.calculatord");
   capabilities.setCapability(MobileCapabilityType.APP_ACTIVITY, "com.android.calculator2.Calculator"); 
   driver = new AndroidDriver(new URL("http://127.0.0.1:4723/wd/hub"), capabilities);
}

@Test
public void testCal(){

    
   WebElement two=driver.findElement(By.name("2"));
    two.click();
    WebElement plus=driver.findElement(By.name("+"));
    plus.click();
    WebElement four=driver.findElement(By.name("4"));
    four.click();
    WebElement equalTo=driver.findElement(By.name("="));
    equalTo.click();
   
    WebElement results=driver.findElement(By.className("android.widget.EditText"));
   
    assert results.getText().equals("6"):"Actual value is : "+results.getText()+" did not match with expected value: 6";

	System.out.println("Inside Test Function");
terClass
public void teardown(){
   
    
    driver.closeApp();
}
}
package com.appiumproj.test;

import io.appium.java_client.AppiumDriver;
import io.appium.java_client.android.AndroidDriver;
import io.appium.java_client.remote.MobileCapabilityType;
import java.net.MalformedURLException;
import java.net.URL;
import org.openqa.selenium.By;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.remote.DesiredCapabilities;
import org.openqa.selenium.support.ui.ExpectedConditions;
import org.openqa.selenium.support.ui.WebDriverWait;
import org.testng.annotations.*;

public class Appium {

AppiumDriver driver;

@BeforeClass
public void setUp() throws MalformedURLException{

     //Set up desired capabilities and pass the Android app-activity and app-package to Appium

   DesiredCapabilities capabilities = new DesiredCapabilities();
   capabilities.setCapability(MobileCapabilityType.VERSION, "5.0.2");
   capabilities.setCapability(MobileCapabilityType.PLATFORM_NAME, "Android");
   capabilities.setCapability(MobileCapabilityType.DEVICE_NAME,"ZX1D62FPVQ");
   capabilities.setCapability(MobileCapabilityType.APP_PACKAGE, "com.android.calculatord"); // This is package name of your app (you can get it from apk info app
   capabilities.setCapability(MobileCapabilityType.APP_ACTIVITY, "com.android.calculator2.Calculator"); // This is Launcher activity of your app (you can get it from apk info app)
   //Create AndroidDriver instance and connect to the Appium server.
   //It will launch the Calculator App in Android Device using the configurations specified in Desired Capabilities

   driver = new AndroidDriver(new URL("http://127.0.0.1:4723/wd/hub"), capabilities);
}

@Test
public void testCal(){

    //locate the Text on the calculator by using By.name()
   WebElement two=driver.findElement(By.name("2"));
    two.click();
    WebElement plus=driver.findElement(By.name("+"));
    plus.click();
    WebElement four=driver.findElement(By.name("4"));
    four.click();
    WebElement equalTo=driver.findElement(By.name("="));
    equalTo.click();
    //locate the edit box of the calculator by using By.className()
    WebElement results=driver.findElement(By.className("android.widget.EditText"));
    //Check the calculated value on the edit box
    assert results.getText().equals("6"):"Actual value is : "+results.getText()+" did not match with expected value: 6";
/*
	System.out.println("Inside Test Function");
	driver.findElement(By.partialLinkText("More")).click();
	driver.findElement(By.xpath("//EditText[@text='Email Address']")).sendKeys("tester@gmail.com");
	driver.findElement(By.xpath("//LinearLayout/EditText[2]")).sendKeys("Testerpwd");
	driver.findElement(By.xpath("//CheckBox")).click();
	driver.findElement(By.xpath("//Button[@text='Login']")).click();

	WebDriverWait wait = new WebDriverWait(driver,80);
	wait.until(ExpectedConditions.presenceOfElementLocated(By.xpath("//Button[@text='Logout']"))); 
	driver.findElement(By.xpath("//Button[@text='Logout']")).click(); 
*/
}
@AfterClass
public void teardown(){
   
    //close the app
    driver.closeApp();
}
}

1 个答案:

答案 0 :(得分:0)

在机器2上运行的Appium实例上提供确切的IP地址。默认情况下,它是127.0.0.1,删除它并在Appium设置中显式提供自己的IP地址。这会奏效。如果没有,请告诉我。