2

Web driver.the コードの android sdk で指定されたサンプル テスト プロジェクトを実行しています。

package simple.app.test;

import android.test.ActivityInstrumentationTestCase2;

import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.android.AndroidWebDriver;

import simple.app.SimpleAppActivity;

public class SimpleGoogleTest extends ActivityInstrumentationTestCase2<SimpleAppActivity> {
    private WebDriver driver;
    private WebDriver googledriver;

    public SimpleGoogleTest() {
        super("simple.app", SimpleAppActivity.class);
    }

    @Override
    protected void setUp() throws Exception {
      driver = new AndroidWebDriver(getActivity());
    }

    @Override
    protected void tearDown() {
       driver.quit();
    }

    public void testGoogleWorks() throws Exception {
        driver.get("http://www.google.com");
        Thread.sleep(10000);
        WebElement searchBox = driver.findElement(By.name("q"));
        searchBox.sendKeys("Android Rocks!");
        searchBox.submit();
        String title = driver.getTitle();
        assertTrue("Got title: " + title, title.contains("Google"));
       assertTrue(driver.findElements(By.partialLinkText("Android")).size() > 1);
    }
}

次の問題が発生しています。

  1. Android2.2-NoSuchMethorError
  2. Android2.3.1 プロセスがクラッシュしました。

これらの問題を解決するのを手伝ってください。

4

1 に答える 1

4

ネハ、

まず最初に、Selenium プロジェクトの Android ドライバーに関連する wiki ページを読みましたか? http://code.google.com/p/selenium/wiki/AndroidDriver

Android 2.2 をサポートする Android WebDriver の最後のバージョンは、APK のリリース 2.16、http: //code.google.com/p/selenium/downloads/detail?name=android-server-2.16.apk です。

現在のバージョンの Android ドライバーを使用したい場合は、新しいバージョンの Android を使用することをお勧めします。ご存じかもしれませんが、新しいエミュレーター (新しい AVD とも呼ばれます) を作成するのは簡単です。AndroidDriver wiki ページでは、2.3 エミュレーターのバグにより、WebDriver が動作しないことが説明されています。ただし、2.3 (またはそれ以降) を実行している実際のデバイスで動作します。

次に確認することは、ターゲット アプリの AndroidManifest.xml にインターネット アクセス許可があるかどうかです。[注: この権限は、ダミー ターゲット アプリ用と TestProject 用の両方の AndroidManifest.xml ファイルで安全に使用できますが、私のテストでは、重要と思われるのはアプリ用のファイルであることがわかりました。]

<uses-permission android:name="android.permission.INTERNET" />

私の知る限り、Android の例のアプリは SimpleApp と呼ばれます。

もう 1 つのヒントは、WebDriver が Google ホームページを取得しようとしたときに読み込まれる WebView のコンテンツの HTML をキャプチャしてみることです。これを行う簡単な方法を次に示します。既存の driver.get(...) の後に呼び出しを追加しました。

driver.get("http://www.google.com");
Log.i("WebDriverDemo", driver.getPageSource());

Log the results への呼び出しには、ログに書き込むことができる量に制限があるため、単純化されているため、大きな HTML ソースは切り捨てられる可能性があります。ただし、問題を特定するにはログの情報で十分な場合があります。

2.2 エミュレーターで Android-WebDriver の 2.16 を使用するか、Android 4.x などの最新バージョンのエミュレーターで Android-WebDriver の現在のバージョンを使用してみても、まだ問題が解決しない場合は、おそらくスタックを追加できます。ここをトレースします。

幸運を

ジュリアン。

PS: Neha による以前の類似の質問に同様の回答を提供しました。この新しいバージョンへのリンクを使用して、Neha がその質問を更新することを提案しました。

于 2013-03-23T18:07:42.837 に答える