In a computing environment, certain managed code application programming interfaces (APIs) can be used for exposing user interface (UI) elements (e.g., controls, objects). Exposing UI elements can be helpful for UI test automation and UI assistive technology (e.g., screen readers), enabling one to manipulate the UI elements by means other than standard inputs. A UI tester may wish to view and map the various objects that underlie the UI, for example, in order to write test scripts to interact with the UI. In a UI, differing framework properties may underlie pieces of the UI, for example, from differing technologies that comprise the UI's functionality.
This Summary is provided to introduce a selection of concepts in a simplified form that are further described below in the Detailed Description. This Summary is not intended to identify key factors or essential features of the claimed subject matter, nor is it intended to be used to limit the scope of the claimed subject matter.
Currently technologies for exposing user interface (UI) elements can include UI Automation, which can expose pieces of the UI to client applications. However, different technologies in a UI can have different UI element trees, for example, window handles (e.g., HWND tree), Internet Explorer COM (e.g., IE DOM tree), and others. In this example, UI elements can be contained in a tree structure, with a desktop as a root element. One can navigate the UI tree to gather information about the UI and its elements, for example. Within a UI tree there can be a root element (e.g., RootElement) that can, for example, represent the current desktop and whose child elements can represent various application windows. Each child elements can further contain elements representing pieces of the UI, such as, menus, buttons, toolbars, and list boxes. Further, these elements can also contain elements such as list items.
A UI tree may not be a fixed structure and can contain thousands of elements. UI technology providers can support a UI tree by implementing navigation among items within a portion of the tree exposed by their technology. However, UI technology providers are not typically concerned with navigation from one UI technology control to another. Typically, different trees may have to be used for different technologies that expose UI elements. Therefore, exposing UI trees using different technologies and navigating between the controls from different UI technology providers can become cumbersome. It may be desirable to have a single tree-view of a UI that can incorporate a variety of UI element exposing technologies.
Techniques and systems are provided herein for providing a merged tree view of user interface (UI) objects in a windowless UI, where multiple technologies may be used to expose objects in a UI tree, utilizing a technology adapter layer. In one embodiment one can register guest technologies (e.g., technologies used in a host program) that may be used in the UI with the technology adapter layer (TAL), for example, which may allow the TAL to manage these guest technologies where appropriate. Further, in this embodiment, one may identify whether a UI object in a UI tree can be switched from a first technology to a second technology (e.g., from the host technology to a guest technology). When navigating down the UI tree, a host technology provider can identify if a UI object in a UI tree can be switched, for example, because during windowless tree-merging the host provider typically knows if switching may be done. When navigating up the UI tree, the identification can comprise using information stored by the TAL to identify if a UI object in a UI tree can be switched, for example, information pertaining to switched technologies stored in a TAL cache when navigating down the UI tree.
After identifying whether the UI object can be switched, one can identify the second technology to be used when switching the UI object in the UI tree. In this embodiment, when navigating down the UI tree, the TAL can request technology switching capability information from one or more registered guest technologies for the UI object, for example, asking the guest technologies if they can switch. When navigating up the UI tree, one can use information stored by the TAL (e.g., from navigating down the tree) to identify the second technology. After determining the second technology, one can convert the UI object from the first technology to the second technology in the UI tree using a COM-based conversion for the UI object.
To the accomplishment of the foregoing and related ends, the following description and annexed drawings set forth certain illustrative aspects and implementations. These are indicative of but a few of the various ways in which one or more aspects may be employed. Other aspects, advantages, and novel features of the disclosure will become apparent from the following detailed description when considered in conjunction with the annexed drawings.
The claimed subject matter is now described with reference to the drawings, wherein like reference numerals are used to refer to like elements throughout. In the following description, for purposes of explanation, numerous specific details are set forth in order to provide a thorough understanding of the claimed subject matter. It may be evident, however, that the claimed subject matter may be practiced without these specific details. In other instances, structures and devices are shown in block diagram form in order to facilitate describing the claimed subject matter.
In one embodiment, one may find a common UI object for both UI trees. As an example, MSAA element two may also be DOM element one, thereby providing a UI element common to both technology trees. In this embodiment, one may merge together both trees from a point of the common element.
In one aspect, in order to facilitate merging (e.g., stitching) of two UI trees from differing technologies, there may several issues for one to resolve. In this aspect, one may wish to identify a common element (e.g., MSAA element two and DOM element one), for example. For windowless user interfaces, such as browser DOM hosting of an ActiveX component or a Windows Presentation Foundation (WPF) application hosting an ActiveX component, identifying an element to merge (e.g., switch) can be different for respective technologies, thereby having no standard identification process.
Further, if a UI object switch is identified, one may wish to identify which other technology tree can be merged (e.g., switched or stitched into) with the UI tree. In a windowless environment, one may not use a window property to identify a technology to merge into the UI tree, thereby providing no standard way to identify the technology to merge. Additionally, when converting a UI object from one technology to another (e.g., merging two UI tree together), a windowless environment may not provide a standard way to perform conversion.
At 306, in the exemplary method 300, one can identify whether a UI object in a UI tree can be switched from a first technology to a second technology. For example, when moving through a tree, one can determine whether switching can be done at respective nodes in the tree (e.g., at MSAA element 2, it can be switched to DOM element 1, as described above). When navigating down a UI tree, a host technology provider can identify if the UI object in the UI tree can be switched, at 308. As an example, respective technology providers typically work over a technology and, therefore, are usually a wrapper over a native object of the technology it supports (e.g., native object for technology provider IEDOM can be IHTMLElement). In this example, a host provider of the UI object reached in the tree knows that a switch can be made to another technology (e.g., using an object tag in Internet Explorer (IE)). In this way, in one embodiment, the TAL can ask the technology provider for the UI object of their hosted technologies if switching can be done, for example.
At 308, in the exemplary method 300, when navigating up the UI tree, one can identify if the UI object can be switched in the UI tree by using information stored by the TAL. As an example, if a switch was done at a UI object when navigating down the UI tree, when navigating back up the UI tree, the same UI object can be a container object with information stored by a TAL cache. In this example, if the UI object is a container object, then switching can be performed, as a windowless technology switch was performed for some ancestor of the UI object. In one embodiment, when reaching a UI object that is a container object, one can determine if a boundary of the current technology has been reached (e.g., the upper node of the current tree) by attempting to “get the parent” of the UI object. In this embodiment, if the parent is null or the container can be converted to a parent of the current technology, then a boundary has been reached.
At 312, in the exemplary method 300, a second technology is identified that can be utilized to switch the UI object to in the UI tree. As an example, while a host technology provider may know that a switch can be made for the UI object of its supported technology, the host provider may not know which other provider to call for conversion. At 314, when navigating down the UI tree, the TAL can send a request to guest technologies, which have registered with the TAL as described above, asking for their switching capabilities with respect to the UI object.
As an example, in one embodiment, when technology providers register with the TAL for windowless switching they can implement a function that gets a UI object from a container if present (e.g., UIObject TechnologyProvider.GetObjectFromContainer (UIObject objectToSwitchTreeAt)). In this embodiment, the request function asks the registered technology provider to return the UI Object from their technology found in a container for the UI object. If a UI object is returned when the TAL evaluates this function, then the TAL can assume that the UI object is able to switch to that registered technology, for example. In this embodiment, if none of the registered technologies return a UI Object, the TAL won't perform the switch.
In another embodiment, if more than one registered technology provider returns a UI object from the request function, a technology switch in the UI tree can be selected based on a pre-determined priority basis. For example, list of registered technology providers can be prioritized based on a user's preferences, or some preset default measure based on a potential use for the exposed UI elements. The TAL can use the prioritized list to determine which of the registered technology providers to use for the switch, if more than one returns a UI object from the request function.
At 316, of the exemplary method 300, when navigating up the UI tree to merge UI trees, the second technology can be identified using information stored by the TAL. In one embodiment, when navigating down the UI tree, the TAL can store an identity of the technology provider used to make a switch in a container UI object, for example, in a cache. In this embodiment, for example, when navigating up the UI tree and this container UI object is reached, the information stored by the TAL in the cache can be used to determine which registered technology can be used to switch to (e.g., merge UI trees).
At 318, the UI object can be converted from the first technology (e.g., the host technology) to the second technology (e.g., an identified registered technology) in the UI tree using a COM-based conversion for the UI object. In one embodiment, COM interfaces may be used for two different technologies to communicate when hosting guest technologies. In this embodiment, a COM-based conversion can work for a majority of circumstances when switching UI objects between technologies (e.g., merging UI trees from different technologies together). As an example, the COM-based conversion can be a default for native objects (e.g., a native object for IE is IHTMLElement). In this example, a technology provider (e.g., MSAA) can query an IUnkown object for IAccessible interface and construct the technology provider's UI Object (e.g., a MSAA UIObject).
In one aspect, for example, if a tester wished to write test code for a UI, they may wish to expose UI elements in order to identify objects and actions that may be utilized during testing. In this example, exposing the UI elements (e.g., using UI Automation), may yield a tree of UI objects rooted at a desktop, comprising application windows, elements and controls for the UI. However, if the UI comprises guest technologies, exposing the UI elements in the host technology may not yield information from the guest technologies, or the tester may have to switch between UI trees for respective technologies, for example. Combining multiple technologies may facilitate a tester's ability to generate test code for the UI.
At 402, a user interface (UI) comprises a host technology and one or more guest technologies (e.g., a windowless UI such as Internet Explorer hosting a component object model such as ActiveX). At 404, the guest technologies are registered with a technology adapter layer (TAL). For example, registering the guest technologies with the TAL can allow the TAL to manage merging of UI trees from the various technologies, reviewing function requests for potential technology switches between different technologies, and store (e.g., cache) information pertaining to UI object switching between technologies.
When navigating down the UI tree, to merge together UI tree from multiple technologies, at 406, and a UI object is encountered, at 408, a host provider can identify if the UI object can be switched from the host technology to another technology (e.g., merging the two technologies' UI trees together at this point), at 410. In this embodiment, because windowless tree-merging is being undertaken, the host provider typically knows when a switch can be made to a tree from another technology. Therefore, for example, for a parent UI object in the UI tree, the TAL can ask the technology provider is switching can be done for the UI object. In this example, if a response to the request is “true” then switching (e.g., the trees can be merged for respective technologies) can be performed on the UI object (e.g., for an object tag in IE).
At 412, if switching is cannot be performed at the UI object (e.g., a “false” is returned from the request), the exemplary embodiment 400 of the method returns to navigating down the UI tree, at 406. However, if the UI object can be switched, the TAL can ask the guest technologies for their switching capabilities pertaining to the UI object, at 414. For example, technology providers that registered with the TAL can implement a “get object” request function from the TAL. In this example, the function can request that a UI object be returned, supported by the registered technology provider, which can be used to switch for the UI object in the UI tree at that position.
At 416, the registered guest technologies apply the request function, and return a response to the TAL. In one embodiment, if the response is not null, it can comprise a UI object that can be merged into the UI tree (e.g., UI objects switched) at the UI object position after conversion. At 418, if a null response, for example, is returned by the respective registered technology providers, a switch is not made and navigation down the tree is continued at 406. However, if a UI object switch can be made, in one embodiment, a COM-based conversion is performed, at 420, from the first technology to the second technology. The converted UI object comprising the second technology is returned to the TAL at 422, for example, as a response to the request function performed at 416.
If more than one converted UI object is returned to the TAL, for example, if more than one technology can perform a switch at the UI object, at 424, a priority list can be used to determine which of the returned UI objects will be used, at 426. In one embodiment, a request function for returning a converted UI object from registered guest technologies can return multiple UI objects. In this embodiment, a pre-determined priority list can be used to select which technology to use at this point. As an example, user preferences can be preset, or a heuristic determination may be used.
If only one converted UI object is returned, or a selection from multiple UI objects has been made, at 428, the converted UI object is merged into the UI tree (stitched onto the tree). In one embodiment, if the merged UI object comprises children, the children can also be merged into the UI tree (e.g., see
When navigating up the UI tree, to merge together UI tree from multiple technologies, at 506, and a UI object is encountered, at 508, information from the TAL cache can be used to identify if technology switching can be done, at 510. In one embodiment, as described above, when navigating down the UI tree, the TAL can store switching information in container UI objects in a cache. In this embodiment, if the UI object that is encountered at 508 is a container object, it is likely that technology switching has occurred. If switching has not occurred (e.g., the UI object is not a container object), at 512, navigation up the tree continues at 506. However, if technology switching can take place at the UI object, at 512, information from the TAL cache (e.g., information in the UI container object) can be used to identify which registered technology to merge into the UI tree, at 514.
In one embodiment, a COM-based conversion of the UI object from the first technology to the second technology (e.g., identified by the TAL cache), can be performed at 516. In another embodiment, a COM-based conversion may not be supported, and respective technology providers can register corresponding “convert” function with the TAL. In this embodiment, respective “convert” functions can take a UI object and return a UI object of a supported type for the corresponding technology. At 518, the converted UI object can be merged (e.g., stitched) into the UI tree, including any children for the converted UI object. Navigation up the UI tree can continue, at 506.
A system may be devised for providing a merged tree of user interface (UI) objects in a windowless UI, where multiple technologies may be use to expose objects in a UI tree.
The exemplary system 600 further comprises a technology adapter layer 604 (TAL), which, in one embodiment, may be used to manage registered UI technologies 650 and the UI tree merging. The TAL 604 comprises a guest technology registration function 606, which can be configured to register guest technologies for the UI. As an example, a host technology may be running (or allowing to run) one or more guest technologies 656 in the UI. In this example, the guest technology registration function 606 can be used to register the guest technologies for the TAL 604, in order to facilitate UI tree merging.
The TAL 604, in the exemplary system 600, further comprises a TAL cache function 610, which can be configured to store UI tree information when navigating down a UI tree. In one embodiment, the UI tree information can comprise: information identifying technology switches in the UI tree; information identifying a first technology for a UI object prior to switching; information identifying a second technology for the UI object after the switching; and information identifying children of the UI object. In this embodiment, the information gathered while navigating down the UI tree can be stored in a TAL cache 652, represented by UI container objects in the UI tree 654. As an example, information gathered for UI objects by the TAL 604, while navigating down the UI tree 654, can be stored in corresponding UI object containers, thereby allowing the information to be retrieved when navigating up the UI tree.
The TAL 604, in the exemplary system 600, further comprises a technology switching capability request function 608, which can be configured to request technology switching capability information from respective registered guest technologies 656 for the UI object when navigating down the UI tree 654. In one embodiment, when guest technology providers register with the TAL 604 for windowless switching can implement the technology switching capability request function 608. In this embodiment, for example, when activated by the TAL while navigating down the tree, the request function 608 asks respective guest technologies 656 to return a UI object, supported by the guest technology 656, to switch with the host technology at a UI object in the UI tree 654. In this way, in this example, the TAL 604 may identify if switching can occur, and which guest technologies 656 can be used for the switch.
In one embodiment, the TAL 604 can further comprise a technology capability identification function 702, as seen in the exemplary embodiment 700 of the TAL 604 in
Further, in this exemplary embodiment 700, the TAL 604 can comprise a priority function 704, which can be configured to select a UI object technology switch based on a pre-determined priority. As an example, if more than one desired response is returned to the technology switching capability request by the technology switching capability request function 702, the priority function 704 can determine which responding registered technology 750 to use for merging into the UI tree. In one embodiment, priority can be determined by a pre-determined user preference. It will be appreciated that, those skilled in the art may devise other priority determinations, and that the techniques and systems described herein are not limited to a particular priority determination.
Turning back to
Further, the UI object technology switching identifier 614 can be configured to use the host technology provider 602 to identify whether a UI object can be switched from a first technology to a second technology when navigating down the UI tree 654. As described above, in one embodiment, the host technology provider 602 knows when switching to a second technology can occur, while navigating down the UI tree. In this embodiment, the UI object technology switching identifier 614 can query the host technology provider 602 to identify if switching can occur.
The exemplary system 600 further comprises a second technology identifier 614, which can be configured to use information stored by the TAL 604 to identify the second technology when navigating up the UI tree 654, and use the technology switching capability request function 608 to identify the second technology when navigating up the UI tree 654. As described above, in one embodiment, the TAL 604 can cache 652 switching information while navigating down the UI tree 654. In this embodiment, this stored information can comprise which technology was switched (e.g., merged into the UI tree). As an example, information stored in a UI container object can include the second technology, which may be used by the second technology identifier 614 to identify the second technology when navigating up the UI tree.
Further, when navigating down the UI tree 654, the second technology identifier 614 can use the technology switching capability request function 608 to identify a technology to switch, as described above. In one embodiment, in response to the request, a registered technology 650 can return a UI object supported by the registered technology 650. In this way, for example, a second technology has been identified.
The exemplary system 600 further comprises a UI object conversion function 616, which can be configured to convert the UI object from the first technology to the second technology in the UI tree 654 using a COM-based conversion for the UI object. In one embodiment, conversion of the UI object from a first technology to a second technology (e.g., merging UI tree) can be COM-based for native object, by default. As an example, hosting a guest technology typically requires that two technologies communicate with each other, which is typically done by COM interfaces. In this embodiment, a COM-based conversion can be used for most situations.
In another embodiment, as seen in the exemplary embodiment 800 of a UI object conversion function 616, in
Still another embodiment involves a computer-readable medium comprising processor-executable instructions configured to implement one or more of the techniques presented herein. An exemplary computer-readable medium that may be devised in these ways is illustrated in
Although the subject matter has been described in language specific to structural features and/or methodological acts, it is to be understood that the subject matter defined in the appended claims is not necessarily limited to the specific features or acts described above. Rather, the specific features and acts described above are disclosed as example forms of implementing the claims.
As used in this application, the terms “component,” “module,” “system”, “interface”, and the like are generally intended to refer to a computer-related entity, either hardware, a combination of hardware and software, software, or software in execution. For example, a component may be, but is not limited to being, a process running on a processor, a processor, an object, an executable, a thread of execution, a program, and/or a computer. By way of illustration, both an application running on a controller and the controller can be a component. One or more components may reside within a process and/or thread of execution and a component may be localized on one computer and/or distributed between two or more computers.
Furthermore, the claimed subject matter may be implemented as a method, apparatus, or article of manufacture using standard programming and/or engineering techniques to produce software, firmware, hardware, or any combination thereof to control a computer to implement the disclosed subject matter. The term “article of manufacture” as used herein is intended to encompass a computer program accessible from any computer-readable device, carrier, or media. Of course, those skilled in the art will recognize many modifications may be made to this configuration without departing from the scope or spirit of the claimed subject matter.
Although not required, embodiments are described in the general context of “computer readable instructions” being executed by one or more computing devices. Computer readable instructions may be distributed via computer readable media (discussed below). Computer readable instructions may be implemented as program modules, such as functions, objects, Application Programming Interfaces (APIs), data structures, and the like, that perform particular tasks or implement particular abstract data types. Typically, the functionality of the computer readable instructions may be combined or distributed as desired in various environments.
In other embodiments, device 1012 may include additional features and/or functionality. For example, device 1012 may also include additional storage (e.g., removable and/or non-removable) including, but not limited to, magnetic storage, optical storage, and the like. Such additional storage is illustrated in
The term “computer readable media” as used herein includes computer storage media. Computer storage media includes volatile and nonvolatile, removable and non-removable media implemented in any method or technology for storage of information such as computer readable instructions or other data. Memory 1018 and storage 1020 are examples of computer storage media. Computer storage media includes, but is not limited to, RAM, ROM, EEPROM, flash memory or other memory technology, CD-ROM, Digital Versatile Disks (DVDs) or other optical storage, magnetic cassettes, magnetic tape, magnetic disk storage or other magnetic storage devices, or any other medium which can be used to store the desired information and which can be accessed by device 1012. Any such computer storage media may be part of device 1012.
Device 1012 may also include communication connection(s) 1026 that allows device 1012 to communicate with other devices. Communication connection(s) 1026 may include, but is not limited to, a modem, a Network Interface Card (NIC), an integrated network interface, a radio frequency transmitter/receiver, an infrared port, a USB connection, or other interfaces for connecting computing device 1012 to other computing devices. Communication connection(s) 1026 may include a wired connection or a wireless connection. Communication connection(s) 1026 may transmit and/or receive communication media.
The term “computer readable media” may include communication media. Communication media typically embodies computer readable instructions or other data in a “modulated data signal” such as a carrier wave or other transport mechanism and includes any information delivery media. The term “modulated data signal” may include a signal that has one or more of its characteristics set or changed in such a manner as to encode information in the signal.
Device 1012 may include input device(s) 1024 such as keyboard, mouse, pen, voice input device, touch input device, infrared cameras, video input devices, and/or any other input device. Output device(s) 1022 such as one or more displays, speakers, printers, and/or any other output device may also be included in device 1012. Input device(s) 1024 and output device(s) 1022 may be connected to device 1012 via a wired connection, wireless connection, or any combination thereof. In one embodiment, an input device or an output device from another computing device may be used as input device(s) 1024 or output device(s) 1022 for computing device 1012.
Components of computing device 1012 may be connected by various interconnects, such as a bus. Such interconnects may include a Peripheral Component Interconnect (PCI), such as PCI Express, a Universal Serial Bus (USB), firewire (IEEE 1394), an optical bus structure, and the like. In another embodiment, components of computing device 1012 may be interconnected by a network. For example, memory 1018 may be comprised of multiple physical memory units located in different physical locations interconnected by a network.
Those skilled in the art will realize that storage devices utilized to store computer readable instructions may be distributed across a network. For example, a computing device 1030 accessible via network 1028 may store computer readable instructions to implement one or more embodiments provided herein. Computing device 1012 may access computing device 1030 and download a part or all of the computer readable instructions for execution. Alternatively, computing device 1012 may download pieces of the computer readable instructions, as needed, or some instructions may be executed at computing device 1012 and some at computing device 1030.
Various operations of embodiments are provided herein. In one embodiment, one or more of the operations described may constitute computer readable instructions stored on one or more computer readable media, which if executed by a computing device, will cause the computing device to perform the operations described. The order in which some or all of the operations are described should not be construed as to imply that these operations are necessarily order dependent. Alternative ordering will be appreciated by one skilled in the art having the benefit of this description. Further, it will be understood that not all operations are necessarily present in each embodiment provided herein.
Moreover, the word “exemplary” is used herein to mean serving as an example, instance, or illustration. Any aspect or design described herein as “exemplary” is not necessarily to be construed as advantageous over other aspects or designs. Rather, use of the word exemplary is intended to present concepts in a concrete fashion. As used in this application, the term “or” is intended to mean an inclusive “or” rather than an exclusive “or”. That is, unless specified otherwise, or clear from context, “X employs A or B” is intended to mean any of the natural inclusive permutations. That is, if X employs A; X employs B; or X employs both A and B, then “X employs A or B” is satisfied under any of the foregoing instances. In addition, the articles “a” and “an” as used in this application and the appended claims may generally be construed to mean “one or more” unless specified otherwise or clear from context to be directed to a singular form.
Also, although the disclosure has been shown and described with respect to one or more implementations, equivalent alterations and modifications will occur to others skilled in the art based upon a reading and understanding of this specification and the annexed drawings. The disclosure includes all such modifications and alterations and is limited only by the scope of the following claims. In particular regard to the various functions performed by the above described components (e.g., elements, resources, etc.), the terms used to describe such components are intended to correspond, unless otherwise indicated, to any component which performs the specified function of the described component (e.g., that is functionally equivalent), even though not structurally equivalent to the disclosed structure which performs the function in the herein illustrated exemplary implementations of the disclosure. In addition, while a particular feature of the disclosure may have been disclosed with respect to only one of several implementations, such feature may be combined with one or more other features of the other implementations as may be desired and advantageous for any given or particular application. Furthermore, to the extent that the terms “includes”, “having”, “has”, “with”, or variants thereof are used in either the detailed description or the claims, such terms are intended to be inclusive in a manner similar to the term “comprising.”
Number | Name | Date | Kind |
---|---|---|---|
5237654 | Shackelford et al. | Aug 1993 | A |
5781720 | Parker et al. | Jul 1998 | A |
5802334 | Nickolas et al. | Sep 1998 | A |
5812135 | Kotchey | Sep 1998 | A |
6078327 | Liman et al. | Jun 2000 | A |
6266681 | Guthrie | Jul 2001 | B1 |
6408403 | Rodrigues et al. | Jun 2002 | B1 |
6424361 | Chapuis | Jul 2002 | B1 |
6496208 | Bernhardt et al. | Dec 2002 | B1 |
6628304 | Mitchell et al. | Sep 2003 | B2 |
6772165 | O'Carroll | Aug 2004 | B2 |
6826443 | Makinen | Nov 2004 | B2 |
6857124 | Doyle | Feb 2005 | B1 |
6868414 | Khanna et al. | Mar 2005 | B2 |
6961909 | Lord et al. | Nov 2005 | B2 |
7117216 | Chakraborty et al. | Oct 2006 | B2 |
7231606 | Miller et al. | Jun 2007 | B2 |
7243090 | Kinzhalin et al. | Jul 2007 | B2 |
7343568 | Jiang et al. | Mar 2008 | B2 |
7426703 | Cheung et al. | Sep 2008 | B2 |
7475365 | Nan et al. | Jan 2009 | B2 |
7539951 | Molander et al. | May 2009 | B1 |
7580970 | Bank et al. | Aug 2009 | B2 |
7653721 | Romanov et al. | Jan 2010 | B1 |
7669147 | Molander et al. | Feb 2010 | B1 |
7698392 | Zapata et al. | Apr 2010 | B2 |
7725840 | Cohen et al. | May 2010 | B2 |
7770110 | Mansell et al. | Aug 2010 | B1 |
8107468 | Yang et al. | Jan 2012 | B2 |
20020083188 | Hericy et al. | Jun 2002 | A1 |
20020188613 | Chakraborty et al. | Dec 2002 | A1 |
20030043192 | Bouleau | Mar 2003 | A1 |
20030070061 | Wong et al. | Apr 2003 | A1 |
20030184585 | Lin et al. | Oct 2003 | A1 |
20040098707 | Tang et al. | May 2004 | A1 |
20040225965 | Garside et al. | Nov 2004 | A1 |
20050022115 | Baumgartner et al. | Jan 2005 | A1 |
20050102684 | McKeon | May 2005 | A1 |
20050246153 | Genkin et al. | Nov 2005 | A1 |
20050278728 | Klementiev | Dec 2005 | A1 |
20060064481 | Baron et al. | Mar 2006 | A1 |
20060064486 | Baron et al. | Mar 2006 | A1 |
20060095895 | K. | May 2006 | A1 |
20060101392 | Isaza | May 2006 | A1 |
20060184410 | Ramamurthy et al. | Aug 2006 | A1 |
20060222160 | Bank et al. | Oct 2006 | A1 |
20060276997 | Drees | Dec 2006 | A1 |
20070011650 | Hage et al. | Jan 2007 | A1 |
20070061625 | Acosta, Jr. et al. | Mar 2007 | A1 |
20070074169 | Chess et al. | Mar 2007 | A1 |
20070088668 | Larab et al. | Apr 2007 | A1 |
20070130293 | Dong et al. | Jun 2007 | A1 |
20070150556 | Fukuda et al. | Jun 2007 | A1 |
20070174300 | Kim | Jul 2007 | A1 |
20070174419 | O'Connell et al. | Jul 2007 | A1 |
20070192181 | Asdourian | Aug 2007 | A1 |
20070214239 | Mechkov et al. | Sep 2007 | A1 |
20070240118 | Keren | Oct 2007 | A1 |
20070294619 | Krishnaswamy et al. | Dec 2007 | A1 |
20080010537 | Hayutin et al. | Jan 2008 | A1 |
20080092057 | Monson et al. | Apr 2008 | A1 |
20080310816 | Allen et al. | Dec 2008 | A1 |
20090089404 | Guo | Apr 2009 | A1 |
20090249300 | Vainer et al. | Oct 2009 | A1 |
20100088651 | Srivastava et al. | Apr 2010 | A1 |
20100125651 | Zapata et al. | May 2010 | A1 |
20100251217 | Miller | Sep 2010 | A1 |
20110145402 | Thagadurai et al. | Jun 2011 | A1 |
Entry |
---|
Notice of Allowance from related U.S. Appl. No. 12/055,325 dated Oct. 29, 2010. |
U.S. Appl. No. 12/055,325, filed Mar. 26, 2008, Shankar et al. |
U.S. Appl. No. 12/056,301, filed Mar. 27, 2008, Vainer et al. |
Hadlock Kris, “How to Handle AJAX Responses”, Feb. 10, 2006, pp. 1-2. |
Levy et al. “Advancing Toward Test Automation Through Effective Manual Testing”, Dated May 2005, pp. 1-12. |
McCaffrey James, “AJAX Test Automation”, http://msdm.microsoft.com/msdnmag/issues/07/02/TestRun/default.aspx. |
McLaughlin Brett, “Mastering AJAX, Part 3: Advanced requests and responses in Ajax”, Feb. 14, 2006, pp. 1-14. |
Raghavan, “AJAX testing using QEngine”, Oct. 15, 2007, pp. 1-4. |
Rational Software, “IBM Rational Functional Tester”, pp. 1-4. |
Xiong et al., “Testing Ajax Applications with Selenium”, Sep. 25, 2006, pp. 1-5. |
“UI Automation and Microsoft Active Accessibility”, Retrieved at <<http://msdn.microsoft.com/en-us/library/ms788733.aspx>>, May 7, 2008, p. 1. |
“How to Use UI Automation Verify (UIA Verify)”, Retrieved at <<http://www.google.co.in/url?sa=t&ct=res&cd=7&url=http%3A%2F%2Fwww.codeplex.com%2FProject%2FDownload%2FFileDownload.aspx%3FProjectName%3DUIAutomationVerify%26DownloadId%3D29576&ei=WmQhSPr—B4v2wwGXzdnPAw&usg=AFQjCNE-Srz0Yvv3lraEoh0YFhPCELDl4w&sig2=FQzOMkaE7cgKEU2cKNq1Xg>>, Mar. 2008, pp. 20. |
“User Interface Automation (UIA)—Working Draft”, Retrieved at <<http://download.microsoft.com/download/5/e/1/5e168e97-91dd-4ca3-ac7e-2131aec8cd1b/Overview—UIA.doc>>, pp. 38. |
Mishra, Umakant “Inventions on Tree Navigators Used in Graphical User Interface”, Retrieved at <<http://papers.ssm.com/sol3/papers.cfm?abstract—id=949244#PaperDownload>>, pp. 7. |
Supplemental Notice of Allowance cited in U.S. Appl. No. 12/055,325 dated Oct. 29, 2010, 15 pgs. |
Amendment after Notice of Allowance cited in U.S. Appl. No. 12/055,325 dated Jan. 21, 2011, 11 pgs. |
Amendment after Notice of Allowance cited in U.S. Appl. No. 12/056,301 dated Mar. 13, 2012, 11 pgs. |
Non-Final Office Action cited in related U.S. Appl. No. 12/086,301 dated Jul. 24, 2011. |
Reply to Non-Final Office Action cited in related U.S. Appl. No. 12/086,301 dated Oct. 27, 2011. |
Notice of Allowance cited in related U.S. Appl. No. 12/086,301 daated Dec. 19, 2011. |
“Composing a Framework to Automate Testing of Operational Web-Based Software”, Steedevi Sampath, Valentin Mihaylov, Amie Souter and Lori Pollock, Proceedings of the 20th IEEE International Conference on Software Maintenance, 2004, 10 pgs. |
Number | Date | Country | |
---|---|---|---|
20100088651 A1 | Apr 2010 | US |