Abstract: Aspects of the present invention methods and systems are directed to enhancing user experience when writing selectors to web elements of web pages. In one embodiment, upon receiving an indication that a user has selected a web element of interest on a web page, a set of attributes of the web element is determined and selectors for the web element is generated based on the attributes, each selector specifying a location of the web element. The generated selectors are displayed to the user, thereby enabling the user to use any desired. In another embodiment, an editor for editing a selector for the web element is provided. Upon receiving inputs from the user to edit a selector text displayed in the editor, suggestions based on the inputs is generated and displayed, thereby enabling the user to incorporate any desired suggestion in the selector text.
FIELD OF THE INVENTION
[001] This invention belongs to the field of computing systems, and more specifically to methods and systems for browser extension to enhance user experience.
BACKGROUND OF THE INVENTION
[002] Software developers are often required to specify the location of web elements of interest specified in web pages. Selectors (also referred to as locators) refer to paths that are used to specify the corresponding locations/addresses of web elements of interest. Examples of such selectors are, but not limited to, - XPath, cssSelector, id, name, className, linkText, partialLinkText, tagName, etc. well known in the relevant arts.
[003] There are several challenges to specifying/writing and also verifying such selectors. Specifying/writing a selector refers to writing a text/string that specifies the location of the web element of interest. Verifying refers to checking whether a written selector indeed does point to the location of a web element of interest. A selector is deemed to be a valid selector if the selector points to a web element, and to be an invalid selector otherwise.
[004] In a current approach, software developers are required to copy values from DOM (document object model) multiple times while writing selectors, as is well known in the arts. In addition, the same web element may be specified using multiple selectors, with some special elements allowing only a subset of selectors to be used. Further challenges are presented due to the specific nature and/or the location of the web elements of interest. For example, when web elements of interest are SVG (scalable vector graphics) elements, when the web elements of interest are shadow DOM elements, when web elements of interest are embedded within iFrames, etc.
[005] In addition, there are challenges to specifying relative selectors where the location of the web element of interest is specified with respect to another web element of the web page (another web element not being the root of the web page). Current approaches force the developers to write absolute selectors (location
specified with respect to the root of the web page). Any changes made to the web pages requires that all such absolute selectors be rewritten in line with the changes. [006] Software testers are also required to specify (and verify) such selectors, for example when writing manual test cases for testing software applications (in particular, web applications). In addition, while testing a web application, software testers are required to remember the actions they have performed to cause the occurrence of an issue, so as to enable them to share the actions with software developers to reproduce the issue.
[007] From the above, it may be readily appreciated that writing and verifying selectors to web elements of interest is time and resource consuming in current approaches. Aspects of the current invention are directed to providing methods and systems for browser extension that facilitates users (software developers/testers) to simplify the process of writing and/or verifying selectors, thereby providing the users with an enhanced user experience.
SUMMARY OF THE INVENTION
[008] Aspects of the present invention methods and systems are directed to enhancing user experience when writing selectors to web elements of web pages. In one embodiment, upon receiving an indication that a user has selected a first web element of interest on a first web page, a set of attributes of the first web element is determined and a plurality of selectors for the first web element is generated based on the set of attributes, each selector specifying a location of the first web element. The generated selectors are displayed to the user, thereby enabling the user to use any desired selector for specifying the location of the first web element.
[009] According to an aspect of the present invention, an editor for editing a first selector for the first web element is provided. Upon receiving one or more inputs from the user to edit a selector text displayed in the editor, a plurality of suggestions based on the one or more inputs is generated and displayed, thereby enabling the user to incorporate any desired suggestion in the selector text for specifying the first selector of the first web element.
[010] According to an aspect of the present invention, a number of web elements in the first web page whose location is specified by the selector text is determined. The determined number of web elements is then displayed to the user, thereby enabling the user to determine whether the selector text is a valid selector or not. [Oil] According to an aspect of the present invention, the selector text specified in the editor is parsed to determine one or more errors. Error messages communicating the one or more errors is then displayed to the user, thereby enabling the user to further verify/validate the selector text. [012] According to an aspect of the present invention, upon receiving a save indication from the user, the selector text is stored as part of a list of selectors in a local storage in response to the save indication. Upon receiving a list indication from the user, the list of selectors is retrieved from the local storage and then displayed to the user, thereby enabling the user to use any desired selector of the list of selectors.
[013] According to an aspect of the present invention, upon receiving a command template containing placeholders for the selector of the first web element, a plurality of command texts for the first web element is generated based on the command template and the plurality of selectors. The generated plurality of command texts is then displayed to the user, thereby enabling the user to use any desired command text for accessing the first web element.
[014] According to an aspect of the present invention, upon receiving additional indications that the user has selected a first set of web elements including the first web element on the first web page, a respective plurality of selectors is generated for each of the first set of web elements based on the corresponding set of attributes of each of the first set of web elements. The first set of web elements and the respective plurality of selectors are then displayed to the user. [015] According to an aspect of the present invention, each selector of the plurality of selectors is of a corresponding selector type of a plurality of selector types. The first set of web elements and the respective plurality of selectors is displayed in a tabular format, with each row corresponding to a web element and each column corresponding to a selector type and associated with a copy action.
Upon receiving from the user, the selection of the copy action associated with a
first column displaying a first selector type, the selectors of the first selector type
is copied as a response to the selection of the copy action associated with the first
column.
[016] According to an aspect of the present invention, each selector of the
plurality of selectors is of a corresponding selector type of a plurality of selector
types comprising XPath, cssSelector, id, name, className, linkText,
partialLinkText, and tagName.
[017] According to an aspect of the present invention, the plurality of selector
types (noted above) is displayed to the user. Upon receiving an input data
indicating the selection of a first subset of selector types from the plurality of
selector types, the selectors corresponding to the first subset of selector types are
generated and displayed.
[018] According to an aspect of the present invention, the indication (from the
user) is in the form of an input text specifying a selector according to a first selector
type, The selectors corresponding to the plurality of selector types other than the
first selector type are generated and displayed, thereby enabling the user to convert
the selector from the first selector type to another desired selector type of the
plurality of selector types.
[019] According to an aspect of the present invention, the determining also
determines that the first web element is an SVG (scalable vector graphics) element
and that only a second subset of selector types is applicable for the SVG element.
Only the selectors corresponding to the second subset of selector types are
generated and displayed.
[020] According to an aspect of the present invention, the determining also
determines that the first web element is a shadow DOM (document object model)
element under one of more shadow root elements and that only a third subset of
selector types is applicable for the shadow DOM element. Only the selectors
corresponding to the third subset of selector types are generated and displayed. In
addition, the selectors corresponding to each of the one or more shadow root
elements are also generated and displayed.
[021] According to an aspect of the present invention, the determining also determines that the first web element is under one of more iFrame elements and that only a fourth subset of selector types is applicable for such web elements. Only the selectors corresponding to the fourth subset of selector types are generated and displayed. In addition, the selectors corresponding to each of the one or more iFrame elements are also generated and displayed. [022] According to an aspect of the present invention, the receiving further receives a first input from the user indicating a parent web element with respect to which the selectors are to be generated. Each selector of the plurality of selectors is generated as a location of the first web element with respect to the parent web element.
[023] According to an aspect of the present invention, the receiving further receives a second input from the user indicating a first attribute of the first web element to be used in the selectors. Each selector of the plurality of selectors is generated using the first attribute to specify the location of the first web element. [024] According to an aspect of the present invention, he receiving further receives a third input specifying one or more options according to which the selectors are to be generated. Each selector of the plurality of selectors is generated (and displayed) according to the one or more options. The one or more options includes a first option to generate the selectors in a case insensitive manner and a second option to generate the selectors using double quotes. [025] According to an aspect of the present invention, the user is enabled to switch on or off a debugger that facilitates the user to select dynamic invisible web elements. The indication is received after the user switches on the debugger such that the first web element is a dynamic invisible element. Accordingly, the selectors for the dynamic invisible element are generated and displayed. [026] According to an aspect of the present invention, upon receiving from the user, a script to be verified with respect to the web elements on the first web page, a second plurality of selectors specified in the script are identified. A respective number of web elements whose location is specified by each of the second plurality of selectors is then determined. The second plurality of selectors and the respective
number of web elements are then displayed to the user, thereby enabling the user to verify the selectors specified in the script.
[027] According to an aspect of the present invention, upon receiving from the user, a second indication to record the actions of the user, a plurality of actions performed by the user after the receipt of the second indication are recorded. The recorded plurality of actions is then displayed to the user. Upon receiving from the user, a third indication to copy the recorded actions, the plurality of actions are copied as a response to the third indication.
[028] Several aspects of the invention are described below with reference to examples for illustration. However, one skilled in the relevant art will recognize that the invention can be practiced without one or more of the specific details or with other methods, components, materials and so forth. In other instances, well-known structures, materials, or operations are not shown in detail to avoid obscuring the features of the invention. Furthermore, the features/aspects described can be practiced in various combinations, though only some of the combinations are described herein for conciseness.
BRIEF DESCRIPTION OF THE DRAWINGS
[029] Example embodiments of the present invention will be described with
reference to the accompanying drawings briefly described below.
[030] FIG. 1 is a block diagram illustrating an example computing system in
which various aspects of the present invention can be implemented.
[031] FIG.s 2A and 2B are flow charts illustrating the manner in which the user
experience when writing selectors to web elements of web pages is enhanced
according to aspects of the present invention.
[032] FIG.s 3 A-3K and 4A-4N depict sample user interfaces providing enhanced
user experience when writing selectors to web elements of web pages in one
embodiment.
[033] FIG. 5 is a block diagram illustrating the details of a digital processing
system in which various aspects of the present invention are operative by execution
of appropriate execution modules, according to the aspects of present invention.
[034] In the drawings, like reference numbers generally indicate identical, functionally similar, and/or structurally similar elements. The drawing in which an element first appears is indicated by the leftmost digit(s) in the corresponding reference number.
DETAILED DESCRIPTION OF THE INVENTION
[035] It is to be understood that the present disclosure is not limited in its application to the details of construction and the arrangement of components set forth in the following description or illustrated in the drawings. The present disclosure is capable of other embodiments and of being practiced or of being carried out in various ways. Also, it is to be understood that the phraseology and terminology used herein is for the purpose of description and should not be regarded as limiting.
[036] As used herein, the singular forms "a", "an", and "the" include both singular and plural referents unless the context clearly dictates otherwise. By way of example, "a dosage" refers to one or more than one dosage. The terms "a" and "an" herein do not denote a limitation of quantity, but rather denote the presence of at least one of the referenced items. Further, the use of terms "first", "second", and "third", and the like, herein do not denote any order, quantity, or importance, but rather are used to distinguish one element from another. [037] The use of "including", "comprising" or "having" and variations thereof herein is meant to encompass the items listed thereafter and equivalents thereof as well as additional items. The terms "comprising", "comprises" and "comprised of as used herein are synonymous with "including", "includes" or "containing", "contains", and are inclusive or open-ended and do not exclude additional, non-recited members, elements or method steps.
[038] All documents cited in the present specification are hereby incorporated by reference in their totality. In particular, the teachings of all documents herein specifically referred to are incorporated by reference.
[039] Example embodiments of the present invention are described below with reference to the accompanying figures.
[040] 1. Example Environment
[041] FIG. 1 is a block diagram illustrating an example computing system (100) in which various aspects of the present invention can be implemented. The block diagram is shown containing end user systems HOa-llOc, network 120, server systems 160a-160b and data store 180. End user system 110a in turn is shown containing browser 140 and selector tool 150. Merely for illustration, only representative number/type of systems is shown in FIG. 1. Many computing systems often contain many more systems, both in number and type, depending on the purpose for which the computing system is designed. Each system/ device of FIG. 1 is described below in further detail.
[042] Network 120 provides connectivity between end user systems HOa-llOc and server systems 160a-160b. Network 120 may represent Wireless/LAN networks implemented using protocols such as Transport Control Protocol/Internet Protocol (TCP/IP), or circuit switched network implemented using protocols such as GSM, CDMA, etc. as is well known in the relevant arts. [043] In general, network 120 provides transport of packets, with each packet containing a source address (as assigned to the specific system from which the packet originates) and a destination address, equaling the specific address assigned to the specific system to which a packet is destined/targeted. The packets would generally contain the requests and responses between the end user systems 110a-110c and server systems 160a-160b as described below.
[044] Data store 180 represents a non-volatile storage, facilitating storage and retrieval of a collection of data by server system 160b. In one embodiment, data store 180 is implemented using relational database technologies where the data is maintained in the form of databases containing tables and columns and provides storage and retrieval of data using structured queries such as SQL (Structured Query Language), as is well known in the relevant arts. Alternatively, data store 18 may be implemented as a file server and store data in the form of one or more files organized in the form of a hierarchy of directories, as is well known in the relevant arts.
[045] Each of server systems 160a-160b represents a system, such as a web and/or application server, executing various software applications designed to perform tasks requested by users using end user systems HOa-llOc. The applications may perform the tasks using data maintained internally to server system, on external data (e.g., maintained in data store 180) or on data received as part of the requests (e.g., input using the user interfaces displayed at the end user systems). The results of performance of the tasks may then be sent as corresponding responses (including web pages) to the requesting end user system. Furthermore, server system 160b may maintain some of the received information (such as the requests/responses) in data store 180.
[046] Each of end user systems 110a-110c represents a system such as a personal computer, workstation, mobile phones (e.g. iPhone available from Apple Corporation), tablets, portable devices (also referred to as "smart" devices") that operate with a generic operating system such as Android operating system available from Google Corporation, etc., used by users to send (client) requests to server systems 160a-160b. In addition, each of end user systems HOa-llOc may include various hardware (and corresponding software) sensors such as camera, microphone, accelerometers, etc.
[047] In general, an end user system enables a user (such as a software developer or a software tester) to send client requests for performing desired tasks to server systems 160a-160b and to receive corresponding responses containing the results of performance of the requested tasks. Browser 140 represents a client web browser executing in end user system 110a that facilitates users to send data to server systems 160a-160b and view the web pages received as responses from the server systems. Browser 140 may be one of Microsoft Edge browser, Firefox browser, Google Chrome browser and Apple Safari browser. [048] As described in the Background section, there are several challenges faced by users when writing and verifying selectors to web elements of interest. Aspects of the present disclosure are directed to enhancing the user experience when writing selectors to web elements of web pages. In one embodiment, aspects of the invention are implemented as a browser extension executing in the context of
browser 140. However, in alternative embodiments, the aspects may be implemented as a separate tool executing in end user system 110a. [049] Selector tool 150 represents the browser extension provided according to several aspects of the present invention that enhances the user experience when writing selectors to web elements of web pages. The manner in which selector tool 150 provides enhanced user experience is described below with examples. [050] 2. General Flows
[051] FIG.s 2A and 2B are flow charts illustrating the manner in which the user experience when writing selectors to web elements of web pages is enhanced according to aspects of the present invention. The flowcharts are described with respect to FIG. 1 merely for illustration. However, various features can be implemented in other systems and/or other environments also without departing from the scope of various aspects of the present invention, as will be apparent to one skilled in the relevant arts by reading the disclosure provided herein. [052] In addition, some of the steps may be performed in a different sequence than that depicted below, as suited in the specific environment, as will be apparent to one skilled in the relevant arts. Many of such implementations are contemplated to be covered by several aspects of the present invention.
[053] Referring to FIG. 2A, in step 201, selector tool 150 receives an indication that a user has selected a web element of interest on a web page (displayed in browser 140). The selection may be performed by the user in a known way, for example, by using the inspect element tool to select the web element of interest. [054] In step 202, selector tool 150 determines a set of attributes of the web element. As is well known, each web element is associated with a corresponding set of attributes and respective values for the attributes (typically, specified in the form "attribute name=attribute value"). The determination of such attributes and respective values may be performed by inspecting the DOM (document object model) of the web page provided by browser 140, as is well known. [055] In step 203, selector tool 150 generates selectors for the web element based on the set of attributes, each selector specifying a location of the web element of interest. The selectors may be generated according to corresponding selector types
such as XPath, cssSelector, id, name, className, linkText, partialLinkText, and
tagName.
[056] In step 204, selector tool 150 displays the generated selectors to the user,
thereby enabling the user to use any desired selector of the generated selectors for
specifying the location of the web element of interest.
[057] Referring to FIG. 2B, in step 221, selector tool 150 provides an editor for
editing a selector for the web element of interest. The editor is provided as part of
the user interface provided by browser 140.
[058] In step 222, selector tool 150 receives one or more inputs from the user to
edit a selector text displayed in the editor.
[059] In step 223, selector tool 150 generates suggestions based on the one or
more inputs and the current selector text. Based on the location of the cursor (point
of editing) of the selector text in the editor, different suggestions may be generated.
In particular, the suggestions aid the user to write a valid selector for the web
element of interest.
[060] In step 224, selector tool 150 displays the generated suggestions to the user,
thereby enabling the user to incorporate any desired suggestion of the generated
suggestion in the selector text for specifying the selector of the web element of
interest.
[061] Thus, selector tool 150 provides an enhanced user experience for users
(software developers/testers) when writing selectors to web elements of web
pages. Some sample user interfaces that may be provided by selector tool 150
according to different aspects are described below with examples.
[062] 3. Sample User Interfaces
[063] FIG.s 3 A-3K and 4A-4N depict sample user interfaces providing enhanced user experience when writing selectors to web elements of web pages in one embodiment. All of the sample user interfaces are shown being provided by browser 140 on a display unit (not shown) associated with end user system 110a. Each of the Figures in described in detail below.
[064] FIG. 3 A illustrates the manner in which auto-generated selectors for a web element of interest is displayed in one embodiment. The user is shown having selected the "input" web element using the DOM shown on the bottom left corner of browser 140, with the bottom right portion displaying the auto-generated selectors corresponding to the user selected web element of interest. [065] FIG. 3B illustrates the manner in which an editor for editing a selector for a web element of interest is provided in one embodiment. In particular, the editor is shown displaying suggestion generated based on the inputs provided by the user in the text box provided on the user interface. The user may select the desired suggestion to incorporate the suggestion in the text box shown there. [066] FIG. 3C illustrates the manner in which a number of web elements in a web page whose location is specified by a selector text is displayed in one embodiment. The text "1 element matching" indicates number of web elements determined to be specified by the selector text in the text box shown there. [067] FIG. 3D illustrates the manner in which error messages communicating the one or more errors with respect to a selector text is displayed in one embodiment. In particular, the error message indicates that the entered selector/xpath is invalid and the specific reason (missing square bracket) for the error. [068] FIG.s 3E and 3F illustrate the manner in which selector texts are enabled to be saved and retrieved as part of the editor provided by selector tool 150 in one embodiment. In particular, FIG. 3E illustrates the manner in which a user is facilitated to save the desired selected text, while FIG. 3F illustrates the manner in which the user is facilitated to retrieve the saved selected text. [069] FIG. 3G illustrates the manner in which command text corresponding to multiple selectors and a user specified command template is displayed in one embodiment. In particular, the user is shown having specified a command template containing placeholders ("xpathvalue") for the selector of the web element of interest ("input"). The command texts are generated by replacing the placeholders in the command template with the corresponding selector values, as will be apparent to one skilled in the relevant arts.
[070] FIG. 3H illustrates the manner in which selectors for multiple web elements are displayed in a tabular format in one embodiment. In particular, it may be appreciated that the set of web elements selected by the user and the respective set of selectors are shown displayed in a tabular format, with each row corresponding to a web element and each column corresponding to a selector type such as XPath, cssSelector, id, name, className, linkText, partialLinkText, and tagName.
[071] FIG. 31 illustrates the operation of generation of command texts in combination with selection of multiple web elements in one embodiment. It may be observed that the command texts are generated for each combination of web element and selector type. It may be further observed that the different selector types are shown displayed as corresponding check boxes to the user. Upon receiving an input data indicating the selection of a subset of selector types (by selecting and deselecting the check boxes), the selectors corresponding only to the subset of selector types are generated and displayed.
[072] FIG. 3 J illustrates the manner in which selectors for multiple web elements are facilitated to be copied in one embodiment. It may be observed that each column is associated with a copy action (the copy icon shown there). Upon receiving from the user, the selection of the copy action associated with a specific column (e.g., the icon shown in the Figure) displaying a selector type (e.g., XPath), the selectors of the selector type are copied as a response to the selection of the copy action associated with the column. The selectors may be copied to a clipboard application executing in end user system 110a, thereby enabling the user to thereafter paste the copied information into any desired client application (such as a code editor application).
[073] FIG. 3K illustrates the manner in which a user is enabled to copy selectors using a context menu in one embodiment. It may be appreciated that the context menu is typically displayed upon the user right-clicking on the web element of interest. The context menu is shown containing options to copy different types of selectors. Accordingly, users are enabled to copy the desired selector directly using
the context menu (without having to use the display area shown in other user
interfaces).
[074] FIG. 4A illustrates the manner in which a user is enabled to convert
selectors from one selector type to another in one embodiment. In particular, the
user in shown entering an input text specifying a selector according to a first
selector type (XPath) in the text box. The selectors corresponding to the other
selector types are shown displayed in the table below.
[075] FIG. 4B illustrates the manner in which selectors for an SVG (scalable
vector graphics) web element is displayed in one embodiment.
[076] FIG.s 4C and 4D illustrates the manner in which selectors for a shadow
DOM web element is displayed in one embodiment. It may be observed that in
FIG. 4D, the selectors corresponding to each of the one or more shadow root
elements are also generated and displayed.
[077] FIG.s 4E and 4F illustrates the manner in which selectors for a web element
embedded in multiple iFrames is displayed in one embodiment. It may be observed
that in FIG. 4F, the selectors corresponding to each of the one or more iFrame
elements are also generated and displayed.
[078] FIG. 4G illustrates the manner in which relative selectors are displayed in
one embodiment. It may be readily observed that the selector of the web element
of interest is shown generated as a location with respect to the parent web element.
[079] FIG. 4H illustrates the manner in which selector containing user specified
attributes is displayed in one embodiment. Upon receiving an input from the user
indicating an attribute ("aria4abel") of the web element ("input") to be used, each
selector generated is shown using the user specified attribute to specify the location
of the web element.
[080] FIG. 41 and 4J together illustrate the manner in which selectors based on
user specified options are displayed in one embodiment. While FIG. 41 displays
the selectors generated for the option to generate the selectors in a case insensitive
manner, FIG. 4J displays the selectors generated for the option to generate the
selectors using double quotes.
[081] FIG. 4K illustrates the manner in which a user is enabled to select dynamic invisible web elements in one embodiment. It may be appreciated that the user first switches on a debugger mode, thereby enabling the user to select dynamic invisible web elements. Accordingly, the selectors for the dynamic invisible element are generated and displayed.
[082] FIG. 4L and 4M together illustrate the manner in which a user to verify the selectors specified in a script in one embodiment. In FIG. 4L, the user is shown providing the script (either pasted into the text area shown there or by selecting a file). In FIG. 4M, the various selectors identified in the script and the respective number of web elements determined for each of the selectors are shown displayed to the user, thereby enabling the user to verify the selectors specified in the script. [083] FIG. 4N illustrates the manner in a user is facilitated to record and save the actions performed in a web browser in one embodiment. The user is also enabled to copy the recorded actions, for example, to a clipboard application executing Iin end user system 110a.
[084] It should be appreciated that some of the above noted features can be implemented in various embodiments as a desired combination of one or more of hardware, execution modules and firmware. The description is continued with respect to one embodiment in which various features are operative when execution modules are executed. [085] 4. Digital Processing System
[086] FIG. 5 is a block diagram illustrating the details of digital processing system 500 in which various aspects of the present invention are operative by execution of appropriate execution modules. Digital processing system 500 may correspond to any of end user systems 110a-l 10c.
[087] Digital processing system 500 may contain one or more processors (such as a central processing unit (CPU) 501), random access memory (RAM) 502, secondary memory 503, graphics controller 506, display unit 507, network interface 508, and input interface 509. All the components except display unit 507 may communicate with each other over communication path 505 which may
contain several buses as is well known in the relevant arts. The components of FIG. 5 are described below in further detail.
[088] CPU 501 may execute instructions stored in RAM 502 to provide several features of the present invention. CPU 501 may contain multiple processing units, with each processing unit potentially being designed for a specific task. Alternatively, CPU 501 may contain only a single general-purpose processing unit. RAM 502 may receive instructions from secondary memory 503 using communication path 505.
[089] Graphics controller 506 generates display signals (e.g., in RGB format) to display unit 507 based on data/instructions received from CPU 501. Display unit 507 contains a display screen to display the images (e.g., portions of the user interfaces of FIG.s 3A-3K and 4A-4N) defined by the display signals. Input interface 509 may correspond to a keyboard and a pointing device (e.g., touch-pad, mouse), which enable the various inputs to be provided (e.g., using the portions of the user interfaces of FIG.s 3A-3K and 4A-4N). Network interface 508 provides connectivity to a network (e.g., using Internet Protocol), and may be used to communicate with other connected systems. Network interface 508 may provide such connectivity over a wire (in the case of TCP/IP based communication) or wirelessly (in the case of WTFI, Bluetooth based communication). [090] Secondary memory 503 may contain hard drive 503a, flash memory 503b, and removable storage drive 503c. Secondary memory 503 may store the data and software instructions (e.g., for performing the actions of FIG.s 2A and 2B), which enable digital processing system 500 to provide several features in accordance with the present invention.
[091] Some or all of the data and instructions may be provided on removable storage unit 504, and the data and instructions may be read and provided by removable storage drive 503c to CPU 501. Floppy drive, magnetic tape drive, CD-ROM drive, DVD Drive, Flash memory, removable memory chip (PCMCIA Card, EPROM) are examples of such removable storage drive 503c. [092] Removable storage unit 504 may be implemented using storage format compatible with removable storage drive 503c such that removable storage drive
503c can read the data and instructions. Thus, removable storage unit 504 includes a computer readable storage medium having stored therein computer software (in the form of execution modules) and/or data.
[093] However, the computer (or machine, in general) readable storage medium can be in other forms (e.g., non-removable, random access, etc.). These "computer program products" are means for providing execution modules to digital processing system 500. CPU 501 may retrieve the software instructions (forming the execution modules) and execute the instructions to provide various features of the present invention described above.
[094] Merely for illustration, only representative number/type of graph, chart, block, and sub-block diagrams were shown. Many environments often contain many more block and sub-block diagrams or systems and sub-systems, both in number and type, depending on the purpose for which the environment is designed. [095] It is to be understood that the present disclosure is not limited in its application to the details of construction and the arrangement of components set forth in the following description or illustrated in the drawings. The present disclosure is capable of other embodiments and of being practiced or of being carried out in various ways. Also, it is to be understood that the phraseology and terminology herein is for the purpose of description and should not be regarded as limiting.
[096] Reference throughout this specification to "one embodiment", "an embodiment", or similar language means that a particular feature, structure, or characteristic described in connection with the embodiment is included in at least one embodiment of the present invention. Thus, appearances of the phrases "in one embodiment", "in an embodiment" and similar language throughout this specification may, but do not necessarily, all refer to the same embodiment. [097] It should be understood that the figures and/or screen shots illustrated in the attachments highlighting the functionality and advantages of the present invention are presented for example purposes only. The present invention is sufficiently flexible and configurable, such that it may be utilized in ways other than that shown in the accompanying figures.
[098] It should be understood that the examples and embodiments described herein are for illustrative purposes only and that various modifications or changes in light thereof will be suggested to persons skilled in the art and are to be included within the spirit and purview of this application and scope of the appended claims. All publications, patents, and patent applications cited herein are hereby incorporated by reference in their entirety for all purposes.
I/We Claim:
1. A method for enhancing user experience when writing selectors to web
elements of web pages, said method comprising:
receiving an indication that a user has selected a first web element of interest on a first web page;
determining a set of attributes of the first web element;
generating a plurality of selectors for the first web element based on the set of attributes, each selector of the plurality of selectors specifying a location of the first web element; and
displaying the plurality of selectors to the user, thereby enabling the user to use any desired selector of the plurality of selectors for specifying the location of the first web element.
2. The method of claim 1, further comprising:
providing an editor for editing a first selector for the first web element;
receiving one or more inputs from the user to edit a selector text displayed in the editor;
generating a plurality of suggestions based on the one or more inputs; and
displaying the plurality of suggestions to the user, thereby enabling the user to incorporate any desired suggestion of the plurality of suggestion in the selector text for specifying the first selector of the first web element.
3. The method of claim 2, further comprising:
determining a number of web elements in the first web page whose location is specified by the selector text; and
displaying the number of web elements to the user, thereby enabling the user to determine whether the selector text is a valid selector or not.
4. The method of claim 2, further comprising:
parsing the selector text to determine one or more errors; and
displaying error messages communicating the one or more errors to the user.
5. The method of claim 2, further comprising:
receiving a save indication from the user;
storing the selector text as part of a list of selectors in a local storage in response to the save indication;
receiving a list indication from the user; and
displaying, after retrieving from the local storage, the list of selectors to the user, thereby enabling the user to use any desired selector of the list of selectors.
6. The method of claim 1, further comprising:
receiving a command template containing placeholders for the selector of the first web element;
generating a plurality of command texts for the first web element based on the command template and the plurality of selectors; and
displaying the plurality of command texts to the user, thereby enabling the user to use any desired command text of the plurality of command texts for accessing the first web element.
7. The method of claim 1, further comprising:
receiving additional indications that the user has selected a first set of web elements including the first web element on the first web page,
wherein the generating generates a respective plurality of selectors for each of the first set of web elements based on the corresponding set of attributes of each of the first set of web elements,
wherein the displaying displays to the user, the first set of web elements and the respective plurality of selectors.
8. The method of claim 7, wherein each selector of the plurality of selectors
is of a corresponding selector type of a plurality of selector types, wherein the
displaying displays the first set of web elements and the respective plurality of selectors in a tabular format, with each row corresponding to a web element and each column corresponding to a selector type and associated with a copy action, the method further comprising:
receiving from the user, the selection of the copy action associated with a first column displaying a first selector type; and
copying the selectors of the first selector type as a response to the selection of the copy action associated with the first column.
9. The method of claim 1, wherein each selector of the plurality of selectors
is of a corresponding selector type of a plurality of selector types comprising XPath,
cssSelector, id, name, className, linkText, partialLinkText, and tagName.
10. The method of claim 9, further comprising:
displaying the plurality of selector types to the user; and
receiving an input data indicating the selection of a first subset of selector types from the plurality of selector types,
wherein the generating generates and the displaying displays only the selectors corresponding to the first subset of selector types.
11. The method of claim 9, wherein the indication is in the form of an input
text specifying a selector according to a first selector type,
wherein the generating generates and the displaying displays the selectors corresponding to the plurality of selector types other than the first selector type, thereby enabling the user to convert the selector from the first selector type to another desired selector type of the plurality of selector types.
12. The method of claim 9, wherein the determining also determines that the
first web element is an SVG (scalable vector graphics) element and that only a
second subset of selector types is applicable for the SVG element,
wherein the generating generates and the displaying displays only the selectors corresponding to the second subset of selector types.
13. The method of claim 9, wherein the determining also determines that the
first web element is a shadow DOM (document object model) element under one of
more shadow root elements and that only a third subset of selector types is
applicable for the shadow DOM element,
wherein the generating generates and the displaying displays only the selectors corresponding to the third subset of selector types,
wherein the generating also generates and the displaying also displays the selectors corresponding to each of the one or more shadow root elements.
14. The method of claim 9, wherein the determining also determines that the
first web element is under one of more iFrame elements and that only a fourth subset
of selector types is applicable for such web elements,
wherein the generating generates and the displaying displays only the selectors corresponding to the fourth subset of selector types,
wherein the generating also generates and the displaying also displays the selectors corresponding to each of the one or more iFrame elements.
15. The method of claim 1, wherein the receiving further receives a first
input from the user indicating a parent web element with respect to which the
selectors are to be generated,
wherein the generating generates each selector of the plurality of selectors as a location of the first web element with respect to the parent web element.
16. The method of claim 1, wherein the receiving further receives a second
input from the user indicating a first attribute of the first web element to be used in
the selectors,
wherein the generating generates each selector of the plurality of selectors using the first attribute to specify the location of the first web element.
17. The method of claim 1, wherein the receiving further receives a third
input specifying one or more options according to which the selectors are to be
generated,
wherein the generating generates each selector of the plurality of selectors according to the one or more options,
wherein the one or more options includes a first option to generate the selectors in a case insensitive manner and a second option to generate the selectors using double quotes.
18. The method of claim 1, further comprising enabling the user to switch
on or off a debugger that facilitates the user to select dynamic invisible web
elements,
wherein the indication is received after the user switches on the debugger, wherein the first web element is a dynamic invisible element,
wherein the generating generates and the displaying displays the selectors for the dynamic invisible element.
19. The method of claim 1, further comprising:
receiving from the user, a script to be verified with respect to the web elements on the first web page;
identifying a second plurality of selectors specified in the script;
determining a respective number of web elements whose location is specified by each of the second plurality of selectors; and
displaying the second plurality of selectors and the respective number of web elements to the user, thereby enabling the user to verify the selectors specified in the script.
20. The method of claim 1, further comprising:
receiving from the user, a second indication to record the actions of the user;
recording a plurality of actions performed by the user after the receipt of the second indication;
displaying the plurality of actions to the user;
receiving from the user, a third indication to copy the recorded actions; and
copying the plurality of actions as a response to the third indication.
21. A system for enhancing user experience when writing selectors to web
elements of web pages, the system performing the actions of:
receiving an indication that a user has selected a first web element of interest on a first web page;
determining a set of attributes of the first web element;
generating a plurality of selectors for the first web element based on the set of attributes, each selector of the plurality of selectors specifying a location of the first web element; and
displaying the plurality of selectors to the user, thereby enabling the user to use any desired selector of the plurality of selectors for specifying the location of the first web element.
22. The system of claim 21, further performing the actions of:
providing an editor for editing a first selector for the first web element;
receiving one or more inputs from the user to edit a selector text displayed
in the editor;
generating a plurality of suggestions based on the one or more inputs; and displaying the plurality of suggestions to the user, thereby enabling the user
to incorporate any desired suggestion of the plurality of suggestion in the selector
text for specifying the first selector of the first web element.
23. The system of claim 21, further performing the actions of:
receiving a command template containing placeholders for the selector of
the first web element;
generating a plurality of command texts for the first web element based on the command template and the plurality of selectors; and
displaying the plurality of command texts to the user, thereby enabling the user to use any desired command text of the plurality of command texts for accessing the first web element.
24. The system of claim 21, further performing the actions of:
receiving additional indications that the user has selected a first set of web
elements including the first web element on the first web page,
wherein the generating generates a respective plurality of selectors for each
of the first set of web elements based on the corresponding set of attributes of each
of the first set of web elements,
wherein the displaying displays to the user, the first set of web elements and
the respective plurality of selectors.
25. The system of claim 21, wherein each selector of the plurality of
selectors is of a corresponding type of a plurality of selector types comprising
XPath, cssSelector, id, name, className, linkText, parti alLinkText, and tagName.
| # | Name | Date |
|---|---|---|
| 1 | 202011031952-PROVISIONAL SPECIFICATION [26-07-2020(online)].pdf | 2020-07-26 |
| 2 | 202011031952-POWER OF AUTHORITY [26-07-2020(online)].pdf | 2020-07-26 |
| 3 | 202011031952-FORM 1 [26-07-2020(online)].pdf | 2020-07-26 |
| 4 | 202011031952-DRAWING [26-07-2021(online)].pdf | 2021-07-26 |
| 5 | 202011031952-CORRESPONDENCE-OTHERS [26-07-2021(online)].pdf | 2021-07-26 |
| 6 | 202011031952-COMPLETE SPECIFICATION [26-07-2021(online)].pdf | 2021-07-26 |
| 7 | 202011031952-FORM 3 [02-10-2021(online)].pdf | 2021-10-02 |
| 8 | 202011031952-ENDORSEMENT BY INVENTORS [02-10-2021(online)].pdf | 2021-10-02 |
| 9 | 202011031952-FORM 18 [23-08-2022(online)].pdf | 2022-08-23 |
| 10 | 202011031952-FER.pdf | 2022-12-30 |
| 11 | 202011031952-OTHERS [29-06-2023(online)].pdf | 2023-06-29 |
| 12 | 202011031952-FER_SER_REPLY [29-06-2023(online)].pdf | 2023-06-29 |
| 13 | 202011031952-CORRESPONDENCE [29-06-2023(online)].pdf | 2023-06-29 |
| 14 | 202011031952-CLAIMS [29-06-2023(online)].pdf | 2023-06-29 |
| 15 | 202011031952-ABSTRACT [29-06-2023(online)].pdf | 2023-06-29 |
| 16 | 202011031952-US(14)-HearingNotice-(HearingDate-04-09-2025).pdf | 2025-08-07 |
| 17 | 202011031952-FORM-26 [01-09-2025(online)].pdf | 2025-09-01 |
| 18 | 202011031952-Correspondence to notify the Controller [01-09-2025(online)].pdf | 2025-09-01 |
| 19 | 202011031952-US(14)-ExtendedHearingNotice-(HearingDate-10-09-2025)-1230.pdf | 2025-09-04 |
| 20 | 202011031952-Correspondence to notify the Controller [08-09-2025(online)].pdf | 2025-09-08 |
| 21 | 202011031952-Annexure [08-09-2025(online)].pdf | 2025-09-08 |
| 22 | 202011031952-Written submissions and relevant documents [25-09-2025(online)].pdf | 2025-09-25 |
| 23 | 202011031952-Annexure [25-09-2025(online)].pdf | 2025-09-25 |
| 24 | 202011031952-PatentCertificate06-11-2025.pdf | 2025-11-06 |
| 25 | 202011031952-IntimationOfGrant06-11-2025.pdf | 2025-11-06 |
| 1 | SearchHistoryE_29-12-2022.pdf |