2

これは私のEclipseテストコードです


package com.example;

import java.net.MalformedURLException;
import java.net.URL;
import java.util.Set;
import java.util.concurrent.TimeUnit;

import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.remote.DesiredCapabilities;
import org.openqa.selenium.remote.SessionId;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.BeforeTest;
import org.testng.annotations.Test;
import io.appium.java_client.AppiumDriver;
import io.appium.java_client.MobileBy;
import io.appium.java_client.android.AndroidDriver;
import io.appium.java_client.android.AndroidElement;
import io.appium.java_client.remote.AndroidMobileCapabilityType;
import io.appium.java_client.remote.MobileCapabilityType;

public class FirstAppiumTest {
    //protected AndroidDriver<AndroidElement> driver = null;
    public AppiumDriver driver;
    @BeforeTest
    public void Setup() throws MalformedURLException
    {String url = "http://127.0.0.1:4723/wd/hub";

        DesiredCapabilities cap=new DesiredCapabilities();

    cap.setCapability("noReset","true");
    cap.setCapability("deviceName","Redmi 4");
    cap.setCapability("platformVersion","7.1.2");
    cap.setCapability("platformName","Android");
    cap.setCapability("app","C:\\Appium\\selendroid-test-app.apk");



     driver=new AndroidDriver(new URL(url),cap);
    }
    @Test
    public void Simpletest() throws InterruptedException
    {  
        driver.manage().timeouts().implicitlyWait(50,TimeUnit.SECONDS);
        //driver.findElement(By.className("android.widget.Button")).click();
        WebElement e1=driver.findElement(By.id("showToastButton"));
        e1.click();
         System.out.print(e1);
 String text=driver.findElement(By.className("android.widget.EditText")).getText();
     System.out.print(text);
     String src = driver.getPageSource();
       System.out.println(src);         
      driver.quit();


    }
}

ここで e1 を印刷しようとすると、オブジェクトの値が表示されます。しかし、クリックまたは getText しようとすると例外が表示されます。コンソールのログは次のとおりです


[RemoteTestNG] TestNG バージョン 6.14.2 が検出されました 2018 年 4 月 27 日 11:16:16 AM org.openqa.selenium.remote.ProtocolHandshake createSession 情報: 方言が検出されました: OSS が失敗しました: Simpletest java.lang.NullPointerException at org.openqa.selenium. remote.RemoteWebElement.execute(RemoteWebElement.java:279) で org.openqa.selenium.remote.RemoteWebElement.click(RemoteWebElement.java:83) で com.example.FirstAppiumTest.Simpletest(FirstAppiumTest.java:56) で sun.reflect .NativeMethodAccessorImpl.invoke0 (ネイティブ メソッド) (sun.reflect.NativeMethodAccessorImpl.invoke (不明なソース))、sun.reflect.DelegatingMethodAccessorImpl.invoke (不明なソース)、java.lang.reflect.Method.invoke (不明なソース)、org.testng org.testng.internal の .internal.MethodInvocationHelper.invokeMethod(MethodInvocationHelper.java:124)。Invoker.invokeMethod(Invoker.java:580) org.testng.internal.Invoker.invokeTestMethod(Invoker.java:716) org.testng.internal.Invoker.invokeTestMethods(Invoker.java:988) org.testng.internal .TestMethodWorker.invokeTestMethods(TestMethodWorker.java:125) org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:109) org.testng.TestRunner.privateRun(TestRunner.java:648) org.testng.TestRunner. run(TestRunner.java:505) で org.testng.SuiteRunner.runTest(SuiteRunner.java:455) で org.testng.SuiteRunner.runSequentially(SuiteRunner.java:450) で org.testng.SuiteRunner.privateRun(SuiteRunner.java) :415) org.testng.SuiteRunnerWorker.run(SuiteRunner.java:364) で org.testng.SuiteRunnerWorker.runSuite(SuiteRunnerWorker.java:52) で org.testng.SuiteRunnerWorker.run(SuiteRunnerWorker.java:84) で org.testng.TestNG.runSuitesSequentially(TestNG.java:1208) で org.testng.TestNG.runSuitesLocally(TestNG.java:1137) で org.testng.TestNG.runSuites(TestNG.java:1049) でorg.testng.remote.AbstractRemoteTestNG.run(AbstractRemoteTestNG.java:114) の org.testng.TestNG.run(TestNG.java:1017) org.testng.remote.RemoteTestNG.initAndRun(RemoteTestNG.java:251) の org .testng.remote.RemoteTestNG.main(RemoteTestNG.java:77)251) org.testng.remote.RemoteTestNG.main (RemoteTestNG.java:77) で251) org.testng.remote.RemoteTestNG.main (RemoteTestNG.java:77) で

===============================================

デフォルトのテスト テストの実行: 1、失敗: 1、スキップ: 0

デフォルト スイート 合計テスト実行: 1、失敗: 1、スキップ: 0

4

1 に答える 1

0

最初に @BeforeTest を @BeforeMethod に変更すると、テスト クラス自体が実行され、xml ランナーによって実行されなくなります。注釈タイプの違いに注意してください。

ドライバーが作成され、アプリガスがデバイスで開かれていますか? その場合は、web 要素の代わりに android 要素を使用してみてください。上記が機能せず、ドライバーが null でない場合は、android ui automator セレクターを使用して要素をクリックしてみてください。

于 2018-05-02T06:02:05.450 に答える