Skip to content

AndroidPageObjectTest improvement.#2

Merged
Jonahss merged 1 commit into
masterfrom
unknown repository
Sep 29, 2014
Merged

AndroidPageObjectTest improvement.#2
Jonahss merged 1 commit into
masterfrom
unknown repository

Conversation

@TikhomirovSergey

Copy link
Copy Markdown

Here is an answer to the question asked here

I could reproduce the problem. I made up the slowest Android SDK emulator as I could.
tests3

This problem was reproduced randomly after some machine reboots. Next test running were always successful. It is strange.

Here are stack traces of exceptions which I could catch:

org.openqa.selenium.NoSuchElementException: Cann't locate an element by this strategy: By.chained({By.AndroidUIAutomator: new UiSelector().resourceId("android:id/list"),By.className: android.widget.TextView})
For documentation on this error, please visit: http://seleniumhq.org/exceptions/no_such_element.html
Build info: version: '2.43.1', revision: '5163bceef1bc36d43f3dc0b83c88998168a363a0', time: '2014-09-10 09:43:55'
System info: host: '***', ip: '***', os.name: 'Windows 7', os.arch: 'amd64', os.version: '6.1', java.version: '1.7.0_45'
Driver info: driver.version: unknown
    at io.appium.java_client.pagefactory.AppiumElementLocator.findElement(AppiumElementLocator.java:132)
    at io.appium.java_client.pagefactory.ElementInterceptor.intercept(ElementInterceptor.java:26)
    at org.openqa.selenium.remote.RemoteWebElement$$EnhancerByCGLIB$$d03393d8.getAttribute(<generated>)

at io.appium.java_client.pagefactory_tests.AndroidPageObjectTest.androidChainSearchElementTest(AndroidPageObjectTest.java:246)

    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:606)
    at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:47)
    at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
    at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:44)
    at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
    at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:26)
    at org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:27)
    at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:271)
    at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:70)
    at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:50)
    at org.junit.runners.ParentRunner$3.run(ParentRunner.java:238)
    at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:63)
    at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:236)
    at org.junit.runners.ParentRunner.access$000(ParentRunner.java:53)
    at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:229)
    at org.junit.runners.ParentRunner.run(ParentRunner.java:309)
    at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:50)
    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)
java.lang.AssertionError: Values should be different. Actual: 0
    at org.junit.Assert.fail(Assert.java:88)
    at org.junit.Assert.failEquals(Assert.java:185)
    at org.junit.Assert.assertNotEquals(Assert.java:161)
    at org.junit.Assert.assertNotEquals(Assert.java:198)
    at org.junit.Assert.assertNotEquals(Assert.java:209)
    at 

io.appium.java_client.pagefactory_tests.AndroidPageObjectTest.areMobileElementsTest(AndroidPageObjectTest.java:211)

    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:606)
    at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:47)
    at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
    at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:44)
    at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
    at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:26)
    at org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:27)
    at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:271)
    at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:70)
    at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:50)
    at org.junit.runners.ParentRunner$3.run(ParentRunner.java:238)
    at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:63)
    at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:236)
    at org.junit.runners.ParentRunner.access$000(ParentRunner.java:53)
    at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:229)
    at org.junit.runners.ParentRunner.run(ParentRunner.java:309)
    at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:50)
    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)

I think that sometimes default time out (1 second) is not enough. In order to solve this problem were created before:

appiumFieldDecoratorInstance.resetImplicitlyWaitTimeOut(desiredTime, desiredTimeUnit);

and

new AppiumFieldDecorator(driver, desiredTime, desiredTimeUnit);

@TikhomirovSergey

Copy link
Copy Markdown
Author

PS: This is the same as the problem which I am facing sometimes when I launch iOSGestureTest on my hackintosh (virtual machine with guest Mac OS X Mavericks). Sometimes 2 seconds is not enough to get an alert.

@Jonahss

Jonahss commented Sep 29, 2014

Copy link
Copy Markdown
Owner

thanks! Rerunning tests now.

Jonahss added a commit that referenced this pull request Sep 29, 2014
AndroidPageObjectTest improvement.
@Jonahss Jonahss merged commit f7687da into Jonahss:master Sep 29, 2014
Jonahss pushed a commit that referenced this pull request Jul 16, 2019
- now only method java docs need to be added #2
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants