2011-06-16 52 views
1

我在模拟器中启动了WebDriver并连接了eclipe的代码。它正在加载并说“未找到网页”。以下是google.com的示例代码片段:Selenium - 任何使用AndroidDriver的人

public class OneTest extends TestCase { 

    public void testGoogle() throws Exception { 
    AndroidDriver driver = new AndroidDriver(); 

// And now use this to visit Google 
driver.get("http://www.google.com"); 



/*WebDriverWebView.enablePlatformNotifications(); 
    final WebDriverWebView newView = new WebDriverWebView(this); 
    newView.setHttpAuthUsernamePassword("10.152.80.42", "proxy ip", 
    "userid", "password"); 
    */ 
driver.manage().timeouts().implicitlyWait(100, TimeUnit.SECONDS); 
// Find the text input element by its name 
WebElement element = driver.findElement(By.name("q")); 

// Enter something to search for 
//element.sendKeys("Cheese!"); 

// Now submit the form. WebDriver will find the form for us from the element 
element.submit(); 

// Check the title of the page 
System.out.println("Page title is: " + driver.getTitle()); 
driver.quit(); 

    } 
} 

以下错误被引发?

org.openqa.selenium.NoSuchElementException: Element not found. 
For documentation on this error, please visit: http://seleniumhq.org/exceptions/no_such_element.html 
System info: os.name: 'Linux', os.arch: 'armv5tejl', os.version: '2.6.29-00261-g0097074', java.version: '0' 
Driver info: driver.version: EventFiringWebDriver 
System info: os.name: 'Windows XP', os.arch: 'x86', os.version: '5.1', java.version: '1.6.0_25' 
Driver info: driver.version: RemoteWebDriver 
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) 
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source) 
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source) 
    at java.lang.reflect.Constructor.newInstance(Unknown Source) 
    at org.openqa.selenium.remote.ErrorHandler.createThrowable(ErrorHandler.java:131) 
    at org.openqa.selenium.remote.ErrorHandler.throwIfResponseFailed(ErrorHandler.java:105) 
    at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:409) 
    at org.openqa.selenium.remote.RemoteWebDriver.findElement(RemoteWebDriver.java:192) 
    at org.openqa.selenium.remote.RemoteWebDriver.findElementByName(RemoteWebDriver.java:241) 
    at org.openqa.selenium.By$4.findElement(By.java:148) 
    at org.openqa.selenium.remote.RemoteWebDriver.findElement(RemoteWebDriver.java:184) 
    at OneTest.testGoogle(OneTest.java:26) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) 
    at java.lang.reflect.Method.invoke(Unknown Source) 
    at junit.framework.TestCase.runTest(TestCase.java:168) 
    at junit.framework.TestCase.runBare(TestCase.java:134) 
    at junit.framework.TestResult$1.protect(TestResult.java:110) 
    at junit.framework.TestResult.runProtected(TestResult.java:128) 
    at junit.framework.TestResult.run(TestResult.java:113) 
    at junit.framework.TestCase.run(TestCase.java:124) 
    at junit.framework.TestSuite.runTest(TestSuite.java:232) 
    at junit.framework.TestSuite.run(TestSuite.java:227) 
    at org.junit.internal.runners.JUnit38ClassRunner.run(JUnit38ClassRunner.java:83) 
    at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:49) 
    at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38) 
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467) 
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683) 
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390) 
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197) 
Caused by: org.openqa.selenium.NoSuchElementException: Element not found. 
For documentation on this error, please visit: http://seleniumhq.org/exceptions/no_such_element.html 
System info: os.name: 'Linux', os.arch: 'armv5tejl', os.version: '2.6.29-00261-g0097074', java.version: '0' 
Driver info: driver.version: EventFiringWebDriver 
System info: os.name: 'Windows XP', os.arch: 'x86', os.version: '5.1', java.version: '1.6.0_25' 
Driver info: driver.version: EventFiringWebDriver 
    at org.openqa.selenium.android.JavascriptDomAccessor.getFirstElement(JavascriptDomAccessor.java:838) 
    at org.openqa.selenium.android.JavascriptDomAccessor.getElementByName(JavascriptDomAccessor.java:170) 
    at org.openqa.selenium.android.AndroidWebElement.findElementByName(AndroidWebElement.java:218) 
    at org.openqa.selenium.android.AndroidDriver.findElementByName(AndroidDriver.java:160) 
    at org.openqa.selenium.By$ByName.findElement(By.java:272) 
    at org.openqa.selenium.android.AndroidDriver.findElement(AndroidDriver.java:119) 
    at java.lang.reflect.Method.invokeNative(Native Method) 
    at java.lang.reflect.Method.invoke(Method.java:521) 
    at org.openqa.selenium.support.events.EventFiringWebDriver$2.invoke(EventFiringWebDriver.java:77) 
    at $Proxy1.findElement(Native Method) 
    at org.openqa.selenium.support.events.EventFiringWebDriver.findElement(EventFiringWebDriver.java:153) 
    at org.openqa.selenium.remote.server.handler.FindElement.call(FindElement.java:41) 
    at org.openqa.selenium.remote.server.handler.FindElement.call(FindElement.java:1) 
    at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:305) 
    at java.util.concurrent.FutureTask.run(FutureTask.java:137) 
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1068) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:561) 
    at java.lang.Thread.run(Thread.java:1096) 

回答

3

尝试与这一个替换以下行

AndroidDriver driver = new AndroidDriver(); 

WebDriver driver = new AndroidDriver(); 

这对我有效。

+0

是,上面的代码应该工作 – 2012-09-20 10:58:36

0

下面的代码应该是有帮助的:

import junit.framework.TestCase; 

import org.openqa.selenium.By; 
import org.openqa.selenium.WebElement; 
import org.openqa.selenium.android.AndroidDriver; 

public class OneTest extends TestCase { 

    public void testGoogle() throws Exception { 
    WebDriver driver = new AndroidDriver(); 

    // And now use this to visit Google 
    driver.get("http://www.google.com"); 

    // Find the text input element by its name 
    WebElement element = driver.findElement(By.name("q")); 

    // Enter something to search for 
    element.sendKeys("Cheese!"); 

    // Now submit the form. WebDriver will find the form for us from the element 
    element.submit(); 

    // Check the title of the page 
    System.out.println("Page title is: " + driver.getTitle()); 
    driver.quit(); 
    } 
} 
+0

访问的详细信息如下:http://code.google.com/p/selenium/wiki/AndroidDriver – 2012-09-20 11:00:27

0

我所看到的是,你应该用合适的.apk文件。我觉得ICS比任何其他版本更多。

也在运行之前始终进行端口转发。

adb forward tcp:8080 tcp:8080