Sign Up

Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.

Have an account? Sign In

Have an account? Sign In Now

Sign In

Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.

Sign Up Here

Forgot Password?

Don't have account, Sign Up Here

Forgot Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Have an account? Sign In Now

You must login to ask a question.

Forgot Password?

Need An Account, Sign Up Here

Please briefly explain why you feel this question should be reported.

Please briefly explain why you feel this answer should be reported.

Please briefly explain why you feel this user should be reported.

Sign InSign Up

The Archive Base

The Archive Base Logo The Archive Base Logo

The Archive Base Navigation

  • Home
  • SEARCH
  • About Us
  • Blog
  • Contact Us
Search
Ask A Question

Mobile menu

Close
Ask a Question
  • Home
  • Add group
  • Groups page
  • Feed
  • User Profile
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Buy Points
  • Users
  • Help
  • Buy Theme
  • SEARCH
Home/ Questions/Q 9161313
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: June 17, 20262026-06-17T13:56:25+00:00 2026-06-17T13:56:25+00:00

I use Robotium Framework for Android testing purpose and manually take component_id or index

  • 0

I use Robotium Framework for Android testing purpose and manually take component_id or index id or else part of Widgets from Hierarchy Viewer to put value at runtime for testing purpose.

Is there any way to take component_id or index id or else part of Widgets Programmatically? So far I’m able to get package name and all activity names under that package application.

  • 1 1 Answer
  • 0 Views
  • 0 Followers
  • 0
Share
  • Facebook
  • Report

Leave an answer
Cancel reply

You must login to add an answer.

Forgot Password?

Need An Account, Sign Up Here

1 Answer

  • Voted
  • Oldest
  • Recent
  • Random
  1. Editorial Team
    Editorial Team
    2026-06-17T13:56:26+00:00Added an answer on June 17, 2026 at 1:56 pm
    import time, subprocess, socket, re
    
    afttFile=open("ApplicationPackage.DOC", "r")
    
    fileName=""
    packageName=""
    activityName=""
    packageFile=None
    
    window_dump=None
    current_window=None
    windows=None
    
    
    #Function for executing adb shell command
    def adb(command, input=None):
        if not isinstance(command,list): command=command.split()
        return subprocess.Popen(command, stdout=subprocess.PIPE, 
                            stderr=subprocess.STDOUT).communicate(input=input)[0]
    
    
    #Function for getting current window hash id
    def getWindowHash():
        command='adb shell ' 
    
        window_dump=subprocess.Popen(command+'dumpsys window windows', shell=False, stdout=subprocess.PIPE)
        window_dump=window_dump.stdout.read()
    
        regexp=re.compile(r'Window #\d+[:\s\r\n]+Window\{(?P<hash>[a-f\d]{8}) (?P<title>.*) paused=.*\}:?[\r\n]+(?P<attributes>(?:    .*[\r\n]+)+)', re.MULTILINE)
    
        windows=[ m.groupdict() for m in regexp.finditer(window_dump) ]
    
        # fetch current window
        m=re.search('mCurrentFocus=Window\{(?P<hash>\S+) (?P<title>\S*) \S+', window_dump)
        if m:
            current_window=m.groupdict()
            #print self.current_window
        else:
            current_window=None
    
        for window in windows:
            if window['hash']==current_window['hash']:
                return [window][0]['hash']
    
    
    #Read Packag Name & Corresponding Activity Name from Provided file
    for line in afttFile:
        #print line
        if len(line.split("."))==3:
            if packageFile!=None:
                packageFile.flush()
                packageFile.close()
                #print "File with name: "+fileName+" closed"
    
            packageName=line.strip("\n")
            print "Package Name: "+packageName
            fileName=line.split(".")[2].strip("\n")+".txt"
            #print fileName
            #Create file with corresponding package name
            packageFile=open(fileName, "a")
    
            #packageFile.flush()
            #packageFile.close()
        else:
            activityName=line.strip("\n")
            print "Activity Name: "+activityName
            ## if packageName=="com.android.browser":
                 ## #print packageName
                 ## ommand="adb -s emulator-5554 shell am start -a android.intent.MAIN -n "+packageName+"/"+activityName
                 ## print command
                 ## ## result=subprocess.Popen(command, shell=False, stdout=subprocess.PIPE)
                 ## ## result=result.stdout.read()
    
            #print packageName
            if packageName=="com.android.mms":
                command="adb shell am start -n "+packageName+"/"+activityName
                print command
                result=subprocess.Popen(command, shell=False, stdout=subprocess.PIPE)
                result=result.stdout.read()
                time.sleep(10)
    
                print "Parsing has been started"
                f=open("AFTT.txt", "w")
    
                command='adb shell '      
                comm='adb '
    
                for port in range(5939,5979,2):   
                    try:              
                        s=socket.socket(socket.AF_INET, socket.SOCK_STREAM)  
                        subprocess.Popen(command+'service call window 2', shell=False, stdout=subprocess.PIPE)
                        time.sleep(.5)
                        subprocess.Popen(command+'service call window 1 i32 4939', shell=False, stdout=subprocess.PIPE)
                        time.sleep(.5)
    
                        adb(comm+' forward tcp:%d tcp:4939' % port)
                        print "forwarding done"
    
                        s.connect(('127.0.0.1', port))
                        #print "Connection Made"
                        print "Port Used for Communication: %s" %port
                        hashId=getWindowHash()
                        print "Window Hash_Id: %s" %hashId
    
                        s.sendall('DUMP %s\n'%hashId)
                        print "Command sent"
                        s.settimeout(360)
                        data=''
                        i=0
                        t0 = time.time()            
                        print "Starting loop"
                        while True:
                            datum=s.recv(32*1024)
                            #print datum
                            #print 'Received %d bytes' % len(datum)        
                            #print "\n"
                            print "Packet: "+datum
                            f.write(datum)
    
                            if (datum.endswith('\nDONE.\n') or datum.endswith('DONE.\n') or datum.endswith('\nDONE.\nDONE\n') or datum.endswith('DONE.\nDONE\n')):
                                #print "End of Packet ransfer"
                                break 
    
                            if datum == '':
                                #print "Socket closed"
                                raise socket.error('Socket closed')
    
                            data+=datum
    
                            if time.time() - t0 > 360:
                                #print "Timeout"
                                raise socket.error('Timeout')                
                            i=i+1
                        break
    
                    except socket.error:
                        #print "Checking for another port"
                        subprocess.Popen(command+'service call window 2', shell=False, stdout=subprocess.PIPE)
                        time.sleep(.5)
                        subprocess.Popen(command+'service call window 1 i32 4939', shell=False, stdout=subprocess.PIPE)
                        time.sleep(.5)
                        #f.close()
                        s.close()
                        #print "Server restarted"
    
                #Open File for Parsing UI Elements
                f=open("AFTT.txt", "r")
                #package=open("Package.txt", "w")
                for line in f:
                    widg_id=re.compile(r'mID=\S*', re.MULTILINE).findall(line)
                    widg_text=re.compile(r'mText=\d*,[a-zA-Z\W\d]*', re.MULTILINE).findall(line)
    
                    if len(widg_id)!=0 or len(widg_text)!=0:
                        ##################################################################
                        #Parse Widget Id
                        if len(widg_id)!=0:
                            widg_id=widg_id[0]        
                            widg_id=str(widg_id) 
                            widg_id=widg_id.strip("[]'")
                            if 'id' in widg_id:
                                widg_id=widg_id.split(",")[1].split("/")[1]
                            else:
                                widg_id=widg_id.split(",")[1]   
                            packageFile.write(widg_id+"->")
                        else:
                            packageFile.write("None->")
    
                        ##################################################################    
                        #Parse Widget Text
                        if len(widg_text)!=0:
                            widg_text=str(widg_text)
                            #Remove unncessary characters from String
                            widg_text=widg_text.strip("[]'")
    
                            #Get the second element that is excluding 'mText'
                            widg_text=widg_text.split(",")[1]
    
                            #SPlit text on basis of space
                            widg_text_ls=widg_text.split(" ")
    
                            widg_text=""
                            #Remove one element from last
                            widg_text_ls.pop()        
                            #Create new STring by joining list
                            widg_text=" ".join(widg_text_ls)       
    
                            if len(widg_text)==0:
                                packageFile.write("None->")
                            else:
                                packageFile.write(widg_text+"->")
                        else:
                            packageFile.write("None->")
    
                        ##################################################################    
                        #Parse Widget Type
                        widg_type=str(line.split("@")[0])
                        widg_type=widg_type.strip(" ")
                        packageFile.write(widg_type)
                        packageFile.write("\n")
                f.close()    
    afttFile.close()    
    
    • 0
    • Reply
    • Share
      Share
      • Share on Facebook
      • Share on Twitter
      • Share on LinkedIn
      • Share on WhatsApp
      • Report

Sidebar

Related Questions

I was just trying to use Robotium in an Android JUnit Test, but the
I use Robotium to test Android app. In the middle of a test I
I've just started learning to use Robotium for testing my app. I have written
When I run a test with Robotium, I use an assertion to verify that
Is possible to write language agnostic Robotium tests? For example, if you use a
I created Android Maven Project with android-quickstart-archetype ( https://github.com/akquinet/android-archetypes/wiki/android-quickstart-archetype ) I need to use
Use Eclipse Classic with ADT plugin. Tried to make project from existing example of
I'm using Robotium for some test automation for an Android application. It's great, but
use qcvalues_test go select [finalConc] ,[rowid] from qvalues where rowid in (select rowid from
I am writing an Android app with ActionBar enabled. In my case I use

Explore

  • Home
  • Add group
  • Groups page
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Users
  • Help
  • SEARCH

Footer

© 2021 The Archive Base. All Rights Reserved
With Love by The Archive Base

Insert/edit link

Enter the destination URL

Or link to existing content

    No search term specified. Showing recent items. Search or use up and down arrow keys to select an item.