Metadata-Version: 1.1
Name: pyfrank
Version: 0.2.8
Summary: python binding for iOS automation using frank.
Home-page: https://github.com/everythingme/pyfrank
Author: Daniel Ben-Zvi
Author-email: daniel@doit9.com
License: BSD
Description: pyfrank - python binding for iOS automation using frank.
        ========================================================
        
        pyfrank is an API to interact with frank, the iOS automation framework.
        
        Installation
        ============
        
        Option 1:
        
        1. Clone this repo or download the sources
        
        2. ``cd pyfrank``
        
        3. ``python setup.py build``
        
        4. ``sudo python setup.py install``
        
        Option 2:
        
        ``sudo pip install pyfrank``
        
        #It's that simple
        -----------------
        
        ::
        
            from pyfrank import *
        
            # We are running a simulator with frank locally on port 32765
            device = Device(host='127.0.0.1', port=32765)
        
            # Get the view representing a tab-bar button with the label "Mail"
            view = device.getView(UiQuery("tabBarButton", {'marked': "Mail" }))
        
            # Touch the button
            response = view.touch()
        
            if isinstance(response, Success):
                logging.info("Test mail button succeeded!");
            elif isinstance(response, Failure):
                logging.error("Test mail button failed: %s", response)
        
        #The object model
        -----------------
        
        Device
        ------
        
        The first entry point for interacting with frank. It's constructor
        receives the host and the port of the frank enabled device.
        
        Example:
        ~~~~~~~~
        
        ::
        
            from pyfrank import *
        
            device = Device("127.0.0.1", 32765)
        
            # Type text into the keyboard
            device.typeIntoKeyboard("abc")
        
            # Execute a method 
            device.appExec("methodSignature", "arg1", "arg2", ...)
        
            # Get the accesibility state
            accessibilityEnabled = device.accessibilityCheck()
        
            # Get the device orientation
            orientation = device.getOrientation()
            if orientation == Orientation.PORTRAIT:
                print "Portrait"
            elif orientation == Orientation.LANDSCAPE:
                print "Landscape"
        
            # Get the application layout graph
            dump = device.dump()
        
        UiQuery
        -------
        
        In frank views can be found using a special query language called
        "UiQuery".
        
        Example:
        ~~~~~~~~
        
        ::
        
            from pyfrank import *
        
            UiQuery("view:'UIImageView' marked:'ProfilePicture'")
        
        -  Additional documentation on UiQuery can be found here:
           http://code.google.com/p/uispec/wiki/Documentation#UIQuery
        
        View
        ----
        
        View allows to perform operations on the view(s) that match a UiQuery.
        
        ::
        
            #Get the profile picture view
            view = device.getView(UiQuery({'view': 'UIImageView'}, {'marked': 'ProfilePicture'}))
        
            #Flash the profile picture
            r = view.flash() 
        
            #Test for success
            if isinstance(r, Success):
                print "Flashed the profile picture!"
            else:
                print "Failed flashing profile picture"
        
            #Touch the profile picture
            r = view.touch()
        
        
            #Get the title text input view
            input = device.getView(UiQuery({'view', 'UITextField'}, {'marked': 'Title'}))
        
            r = input.setText("New title text")    
        
            if isinstance(r, Success):
                print "Title input was changed successfully."
            else:
                print "Failed changing title input"
        
        Retrieve a view property
        ------------------------
        
        ::
        
            view = device.getView(UiQuery({'view':'UILabel'}, { 'marked':'Pull down to refresh...' }))
        
            # 
            # Pull out the 'text' attribute.
            r = view.text()
        
            if isinstance(r, Success):
                labelText = r['results'][0]
        
                print "The text of the UILabel is", labelText
            else:
                print "I seriously failed to retrieve the UILabel text attribute", r
        
        Take a screenshot
        -----------------
        
        ::
        
            device.screenshot(fileName='snapshot.jpg')
        
        Run javascript code inside a WebView
        ------------------------------------
        
        ::
        
            view = device.getView(UiQuery('webView', { 'index':0 }))
        
            # Fetch the URL from JS
            url = view.stringByEvaluatingJavaScriptFromString('location.href').results()[0]
            print "URL:", url
        
            # Pop up an alert box
            view.stringByEvaluatingJavaScriptFromString("alert('Hello from pyfrank!')")
        
        #More information on frank
        --------------------------
        
        http://testingwithfrank.com/
        
Keywords: python frank pyfrank frankly ios qa automation robot testing
Platform: UNKNOWN
Classifier: Development Status :: 4 - Beta
Classifier: License :: OSI Approved :: BSD License
Classifier: Intended Audience :: Developers
Classifier: Programming Language :: Python :: 2.7
Classifier: Topic :: Software Development :: Testing
