我正在运行 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);
}
}
我遇到以下问题:
- Android2.2-NoSuchMethorError
- 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/