簡體   English   中英

如何使用Eclipse在Appium上運行腳本測試?

[英]How to run a script test on Appium with Eclipse?

嗨,我編寫了這段代碼,我正在嘗試做一個測試,該測試將通過使用Appium在APP中進行登錄過程。 當我運行測試時,它會向我返回此錯誤:

org.openqa.selenium.WebDriverException:處理命令時發生未知的服務器端錯誤。 原始錯誤:啟動App時發生錯誤。 原始錯誤:執行adbExec時出錯。 原始錯誤:'命令'C:\\ Users \\ lucas \\ AppData \\ Local \\ Android \\ sdk \\ platform-tools \\ adb.exe -P 5037 -s 5210ce98fa7eb4b3 shell am start -W -n com.consul.android.smartbeer.qa /com.whirlpool.ted.View.DashBoardActivity -S'以代碼1'退出; Stderr:'java.lang.SecurityException:權限拒絕:啟動意圖{flg = 0x10000000 cmp = com.consul.android.smartbeer.qa / com.whirlpool.ted.View.DashBoardActivity launchParam = MultiScreenLaunchParams {mDisplayId = 0 mBaseDisplayId = 0 mFlags = 0}}從null(pid = 867,uid = 2000)不從android.os.Parcel.readException(Parcel.java:1703)的uid 10226導出,而在android.os.Parcel.readException(Parcel.java:1653)在android.app.ActivityManagerProxy.startActivityAndWait(ActivityManagerNative.java:3680)在com.android.commands.am.Am.runStart(Am.java:658)在com.android.commands.am.Am.onRun(Am.java :392)com.android.internal.os.BaseCommand.run(BaseCommand.java:51)com.android.commands.am.Am.main(Am.java:125)com.android.internal.os。 com.android.internal.os.RuntimeInit.main(RuntimeInit.java:316)上的RuntimeInit.nativeFinishInit(Native方法)'; 代碼:'1'(警告:服務器未提供任何堆棧跟蹤信息)命令持續時間或超時:28.33秒構建信息:版本:'3.9.1',修訂版:'63f7b50',時間:'2018-02-07T22: 42:22.379Z'系統信息:主機:'LAPTOP-PFJQUV00',ip:'192.168.116.1',操作系統名稱:'Windows 10',os.arch:'amd64',os.version:'10 .0',Java .version:“ 1.8.0_152”驅動程序信息:driver.version:位於sun.reflect.NativeConstructorAccessorImpl.newInstance0(本機方法)處的AndroidDriver,位於sun.reflect.DelegatingConstructorAccessorImpl.newInstance(未知源)處來源)於org.openqa.selenium.remote.ErrorHandler.throwIfResponseFailed(ErrorHandler.org.openqa.selenium.remote.ErrorHandler.createThrowable(ErrorHandler.java:214)處的java.lang.reflect.Constructor.newInstance(未知來源) java:166)at org.openqa.selenium.remote.JsonWireProtocolResponse.lambda $ new $ 0(JsonWireProtocolResponse.java:53)at org.openqa.selenium.remote.JsonWireProtocolRespons org.openqa.selenium.remote.ProtocolHandshake.lambda $ createSession $ 0(ProtocolHandshake.java:123)上的e.lambda $ getResponseFunction $ 2(JsonWireProtocolResponse.java:91)在java.util.stream.ReferencePipeline $ 3 $ 1.accept(未知源) ),位於java.util.stream.ReferencePipeline.forEachWithCancel(未知源),位於java.util.stream.ReferencePipeline.forEachWithCancel(未知源),位於java.util.stream.AbstractPipeline.copyIntoWithCancel(未知源),位於java.util.stream.ReferencePipeline.forEachWithCancel(未知源)。 java.util.stream.AbstractPipeline.copyInto(未知源)java.util.stream.FindOps $ FindOp.evaluateSequential(未知源)處java.util.stream.AbstractPipeline.evaluate(未知源)處AbstractPipeline.wrapAndCopyInto(未知源) ),位於org.openqa.selenium.remote.ProtocolHandshake.createSession(ProtocolHandshake.java)上的org.openqa.selenium.remote.ProtocolHandshake.createSession(ProtocolHandshake.java:126)上的java.util.stream.ReferencePipeline.findFirst(未知源) :73),網址為org.openqa.selenium.remote.HttpCommandExecutor.e io.appium.java_client.remote.AppiumCommandExecutor.execute(AppiumCommandExecutor.java:89)處的org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:601)處的xecute(HttpCommandExecutor.java:138) io.appium.java_client.AppiumDriver.execute(AppiumDriver.java:1)的io.appium.java_client.android.AndroidDriver.execute(AndroidDriver.java:1)的.java_client.DefaultGenericMobileDriver.execute(DefaultGenericMobileDriver.java:42) io.appium.java_client.DefaultGenericMobileDriver。(Default:GenericMobileDriver。 38)在io.appium.java_client.AppiumDriver。(AppiumDriver.java:93)在io.appium.java_client.AppiumDriver。(AppiumDriver.java:83)在io.appium.java_client.android.AndroidDriver。(AndroidDriver.java: 72)在test.FacebookLoginTest.testLoginFB(FacebookLoginTest.java:30)在sun.reflect.NativeMethodAccessorImpl.invok 位於org.junit.runners的java.lang.reflect.Method.invoke(未知源)處的sun.reflect.DelegatingMethodAccessorImpl.invoke(未知源)處的sun.reflect.NativeMethodAccessorImpl.invoke(未知源)處的e0(本機方法)。在org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)的model.FrameworkMethod $ 1.runReflectiveCall(FrameworkMethod.java:50)在org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java) :47)位於org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17),位於org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:325),位於org.junit.runners.BlockJUnit4ClassRunner。 org.junit.runners的runChild(BlockJUnit4ClassRunner.java:78).org.junit.runners.ParentRunner的BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:57)org.junit.runners的org.junit.runners.ParentRunner $ 3.run(ParentRunner.java:290)在org.junit.runners上的ParentRunner $ 1.schedule(ParentRunner.java:71)在org.junit.runners上的ParentRunner.runChildren(ParentRunner.java:288)。 在org.junit.runners上的ParentRunner.access $ 000(ParentRunner.java:58)在org.eclipse上的org.junit.runners.ParentRunner.run(ParentRunner.java:363)上的org.junit.runners.ParentRunner.run(ParentRunner.java:363)上的$ 2.evaluate(ParentRunner.java:268) org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)上的.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:86)在org.eclipse.jdt.internal上org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:760)上的.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:538)在org.eclipse.jdt.internal.junit.runner上.RemoteTestRunner.run(RemoteTestRunner.java:460)位於org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:206)

我正在嘗試對登錄進行簡單的測試,但是我陷入了困境。 Appium無法打開應用程序:(

這是Java中的類Clode:

    package test;

    import io.appium.java_client.android.AndroidDriver;

    import java.net.MalformedURLException; import java.net.URL; 
    import java.util.concurrent.TimeUnit; 
    import org.openqa.selenium.remote.DesiredCapabilities; 
    import io.appium.java_client.AppiumDriver; 
    import io.appium.java_client.MobileElement; 
    import io.appium.java_client.android.AndroidDriver;

    import org.junit.Test;

    public class TedLoginTest {

    @Test

    public void testLoginFB() throws MalformedURLException, InterruptedException    {   

    DesiredCapabilities capabilities = new DesiredCapabilities() ;  

    capabilities.setCapability("automationName","Appium");  
    capabilities.setCapability("platformnName","Android");  
    capabilities.setCapability("platformVersion","7.0");    
    capabilities.setCapability("deviceName","Lucas" );  
    capabilities.setCapability("udid", "5210ce98fa7eb4b3");     
    capabilities.setCapability("app","C:\\Users\\lucas\\Downloads\\TED.apk");
    capabilities.setCapability("appActivity", "com.whirlpool.ted.View.DashboardActivity");
    AndroidDriver driver = new AndroidDriver (new URL ("http://0.0.0.0:4723/wd/hub"), capabilities) ;
    driver.manage().timeouts().implicitlyWait(100,TimeUnit.SECONDS);

    driver.findElementByAndroidUIAutomator("new UiSelector().resourceId(\"com.consul.android.smartbeer.qa:id/edEmail\")").sendKeys("tedusp01@yahoo.com");
    driver.findElementByAndroidUIAutomator("new UiSelector().resourceId(\"com.consul.android.smartbeer.qa:id/edPassword\")").sendKeys("Smart2000");
    driver.findElementByAndroidUIAutomator("new UiSelector().resourceId(\"com.consul.android.smartbeer.qa:id/login\").text(\"Entrar\")").click();
    Thread.sleep(8000);

     }
    }

有人知道我在做什么錯嗎? 我會丟失任何導入信息嗎?還是語法錯誤?

在搜索SO時,我發現了許多與此類似的問題,它們或多或少都具有相同的答案。


您需要在聲明此活動的AndroidManifest.xml文件中設置android:exported="true"

<activity
    android:name="com.example.lib.MainActivity"
    android:label="LibMain" 
    android:exported="true">
    <intent-filter>
        <action android:name="android.intent.action.MAIN" >
        </action>
    </intent-filter>
</activity>

參考: https : //stackoverflow.com/a/19829733/2533443

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM