ANDROID 网络驱动程序与 Selenium

标签 android selenium webdriver

我正在运行 web 驱动程序的 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 进程崩溃。

请帮我解决这些问题。

最佳答案

内哈,

首先,您是否阅读过 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" />

据我所知,Android 示例的应用程序称为 SimpleApp。

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

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

这很简单,因为对记录结果的调用对其可以写入日志的量有限制,因此大型 HTML 源可能会被截断。不过,日志中的信息可能足以让您识别问题。

如果您尝试在 2.2 模拟器中使用 2.16 版 Android-WebDriver,或者在具有更高版本 Android(例如 4.x)的模拟器中使用当前版本的 Android-WebDriver,但仍然遇到困难,也许您可​​以在此处添加堆栈跟踪。

祝你好运

朱利安。

PS:我对 Neha 提出的一个类似的早期问题提供了类似的答案。我建议 Neha 更新该问题并提供此新版本的链接。

关于ANDROID 网络驱动程序与 Selenium ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15491935/

相关文章:

java - Android-配置文件

android - 从适配器刷新 ListView

android - 如何在 Android 上获取 VideoView 的缓冲百分比

python - 如何使用 Python Selenium 下载完整的网页

selenium - WebDriverException 元素必须是用户可编辑的才能清除它

google-chrome - Selenium 打开未登录 Chrome 帐户的 chrome

android - 使用 Android 中非 Activity 类的内部存储

java - 无法找到窗口 - Selenium Webdriver 错误

python - Selenium 中的相对选择器?

java - 如何在不使用 selenium/webdriver 方法的情况下切换到新窗口