Closed flyingmoon15 closed 2 years ago
You are mixing stuff from different projects, that unfortunately have similar names.
The AdbClient
you need to work with AndroidViewClient
is this one: https://github.com/dtmilano/AndroidViewClient/blob/master/src/com/dtmilano/android/adb/adbclient.py#L195
I don't still get what you mentioned above about AdbClient... and its link
However, I finally make it.
What I did was...
I had thought that 'ViewClient(*ViewClient.connectToDeviceOrExit())' could be run with my steps above before I wrote this question. But running the culebra code before ViewClient makes all work well!
I guess that copying the code culebra
generated gave you the correct imports.
Wow really thanks about your answer!
Finally, I got the code to run 'AndroidViewClient' !!!
import sys import getopt from com.dtmilano.android.viewclient import ViewClient, CulebraOptions optlist, args = getopt.getopt(sys.argv[1:], CulebraOptions.SHORT_OPTS, CulebraOptions.LONG_OPTS) sys.argv[1:] = args ViewClient(*ViewClient.connectToDeviceOrExit()).traverse()
Those codes are all I need to see the result which I wanted to see...
Can you please tell me how the codes above solved the problem? (error: incomplete escape \U at position 2)
What I meant is that you imported something different as AndClient
and importing the wrong package or class may lead to those strange errors.
As you may have discovered already, culebra and Culebra GUI are really helpful to generate base script that you can later adapt to your needs.
The smallest script you can write using traverse
could be something like this
#! /usr/bin/env python3
from com.dtmilano.android.viewclient import ViewClient
ViewClient(*ViewClient.connectotoDeviceOrExit()).traverse(transform=print)
Feel free to ask any question.
A... small question arised!
I want to make my phone receive calls automatically.
So I tried 'traverse' to get the id of 'receiving call button' like the below e.g. android.widget.Button com.samsung.android.dialer:id/dialer_menu_search
So when my phone is ringing, I did 'traverse'. But the result was 'RuntimeError: The views are being refreshed too frequently to dump.'
Is these any way to get 'resource-id'? So I can receive a call by the .touch() command when phone is ringing!
Can you explain your objective?
Do you want to wait in a loop util you detect a View with id com.samsung.android.dialer:id/dialer_menu_search
and then click it?
No... sorry my explanation was not good.
My objective is that I want to see the ID when my phone is ringing so I can click the button (receiving call button)
Like using a command (vc.findViewById('com.samsung.android.incallui:id/seven').touch())
I got that. My question was more in the lines of how are you going to wait for the incoming call?
Are you detecting that there's an incoming call when that Button appears?
If the screen is refreshing too fast for uiautomator
to get the dump there are other alternative backends like CulebraTester2-public.
hmm... I'm still fuzzy about what you just said. Simply saying.... How can I click 'receving call button' when a phone is ringing? At least, I need to know ID like com.samsung.android.incallui:id/seven. Thus, I can use a command 'vc.findViewById('com.samsung.android.incallui:id/seven').touch()' in order to click 'receving call button'. Anyway, I will try CulebraTester2-public. I don't know how to use it though :)
simple-calculator-test may give you some ideas about how to locate and touch on Buttons.
Assuming you have culebratester_client
>= 2.0.19 and CulebraTester2-public
>= 2.0.19-alpha installed and the service running on the device, that the Button you want to click has the text Answer
, then
#! /usr/bin/env python3
import culebratester_client as ctc
by_selector = 'text@Answer'
timeout = 60000
api = ctc.DefaultApi(ctc.ApiClient())
api.ui_object2_oid_click_get(api.ui_device_wait_get(api.until_find_object_get(by_selector=by_selector).oid, timeout=timeout).oid)
will wait for 60 secs (you can extend it as you want) and when an incoming call is detected it will click on Answer
.
The steps:
Answer
Thanks for the answer! I couldn't try your last two answers due to dealing with something urgent. I will try them and let you know. Again, I really appreciate your answer!
Hello dears!
I am quite new here as well as the programming environment.
I'm recently interested in Android automation and been trying to make AndroidViewClient work. But failed....
Everytime I try to run this ViewClient(*ViewClient.connectToDeviceOrExit()), i got 'incomplete escape \U at position 2' message.
I'm not sure if my running environment is okey to run or not.
So please please check mine!! (It will be sososo appreciated if I can use this awesome library)
My environment is
What I did was wrong? Please help me =( Plus. I attached a text file (the error messages resulted from running 'ViewClient(*ViewClient.connectToDeviceOrExit())' on Jupyter Notebook
error.txt