2

我正在运行 android sdk for web driver 中给出的示例测试项目。代码是:

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 是否具有 Internet 权限。[注意:我在两个 AndroidManifest.xml 文件中都有这个权限,一个用于虚拟目标应用程序和 TestProject 是安全的,但是在我的测试中,我发现似乎重要的是应用程序的一个。]

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

AFAIK Android 示例的应用程序称为 SimpleApp。

另一个技巧是尝试捕获 WebDriver 尝试获取 google 主页后加载的 WebView 内容的 HTML。这是一种简单的方法,我在现有的 driver.get(...) 之后添加了调用

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

这很简单,因为对 Log 结果的调用对它可以写入日志的数量有限制,因此可能会截断大型 HTML 源。但是,日志中的信息可能足以让您识别问题。

如果您尝试在 2.2 模拟器中使用 2.16 的 Android-WebDriver 或在具有更高版本的 Android(例如 4.x)的模拟器中使用当前版本的 Android-WebDriver 后仍然卡住,也许您可​​以添加堆栈在这里追踪。

祝你好运

朱利安。

PS:我对 Neha 之前的一个平行问题提供了类似的答案。我建议 Neha 更新该问题,并提供指向此较新版本的链接。

于 2013-03-23T18:07:42.837 回答