appium / python-client

Python language bindings for Appium
Apache License 2.0
1.66k stars 559 forks source link

Bulk Execution is throwing Appium WebDriveexception and StaleElementReferenceException #623

Open soma-githubcloud opened 3 years ago

soma-githubcloud commented 3 years ago

The Problem

(1)WebDriverException: Message: An unknown server-side error occurred while processing the command. Original error: Could not proxy command to the remote server. Original error: socket hang up (2)StaleElementReferenceException: Message: androidx.test.uiautomator.StaleObjectException (3)Test execution stopped due to a fatal error

Environment

Appium version : Appium 1.21.0 Desktop OS/version used to run Appium: Node version : v14.3.0 Npm Version : 6.14.5 Mobile platform/version under test: Android 10 and 11 (Models - OPPO F7, MOTTO G6, SAMSUNG M31 , Goggle Pixel) Real device or emulator/simulator: Real Devices java version "1.8.0_291" Java(TM) SE Runtime Environment (build 1.8.0_291-b10) Java HotSpot(TM) 64-Bit Server VM (build 25.291-b10, mixed mode) robotframework-appiumlibrary : 1.5.0.6 Appium-UIAutomation : 0.1.0 Appium-Python-Client : 1.0.2 robotframework : 3.2.2 robotframework-seleniumlibrary : 4.3.0 webdrivermanager : 0.8.0

Details

(1) product Overview : Telecom application which have functionality to work with SMS,CALLS and CONTACTS for business enterprises solution . (2) Test running challenges : (i)Product point of view we are using Robot framework using RIDE as IDE tool for Automating our test suite using Selenium and Appium Library. (ii)While running more than 50+ scripts appium server stops the response and throw bad server error ,which leads to failures of rest scripts in the suite (iii)Changing from default to any other port number also not worked out much (e.g; default from 4723 to 4725) (iv)Also, we have some scenario where we have to do cross platform testing with (Web+Mobile). (v)We are not only checking the cases within the application as we are doing touch base on Mobile Native application as well like - dealing with network connections to ON or off the wifi ,Data , etc (vi) we are getting element not found several times where we can see the element is present in the screen, we have tried with all sync options and looks like it is the response from Appium server which Is causing the problem

soma-githubcloud commented 3 years ago

Device2_Pixel_logcat (1).txt Device1_SM_logcat (1).txt console.Robot.Pass.and.Fail.Output.Logs.txt Webdriver.Exception.Appium.Logs.txt

mykola-mokhnach commented 3 years ago

Please do not merge all issues into one report. It is very hard to parse huge logs. Instead, try to isolate each of them and report it in isolation.

I did not check the details, but in general my observations regarding the above stuff are:

soma-githubcloud commented 3 years ago

Hi @mykola-mokhnach : thanks for your input. We are trying the comments in our scripts context, will get back with the observations.

soma-githubcloud commented 3 years ago

hi @mykola-mokhnach : We are handling Call scenario with our app where we are always connecting two devices, We have used Robot Framework here and we are using robot framework appium library here. There step where we are now getting the webdriver exception is -> Close All Applications. The complete error - WebDriverException: Message: A session is either terminated or not started. You are switching between 2 devices and finally in the tear down we are writing "Close All Applications" I am attaching the python file which robot framework code is written for - "Close All Applications". Please let me know if there is any driver conflict going on here ? as we are using two devices , two times we are launching applications . If so then how better we can handle that.

soma-githubcloud commented 3 years ago

Applicationmanagement Robot python file.txt

mykola-mokhnach commented 3 years ago

Unfortunately I don't know much about that client wrapper, so cannot help much there.

VenkateshPS commented 3 years ago

@soma-githubcloud do you have the stack trace of exception. You should try debugging self._cache.close_all()

soma-githubcloud commented 3 years ago

@VenkateshPS : Venkatesh the stack trace is related to android log cat? where i should use debugging self._cache.close_all()?