DE112014001997T5 - Kennzeichnen von Client-Zuständen - Google Patents

Kennzeichnen von Client-Zuständen Download PDF

Info

Publication number
DE112014001997T5
DE112014001997T5 DE112014001997.6T DE112014001997T DE112014001997T5 DE 112014001997 T5 DE112014001997 T5 DE 112014001997T5 DE 112014001997 T DE112014001997 T DE 112014001997T DE 112014001997 T5 DE112014001997 T5 DE 112014001997T5
Authority
DE
Germany
Prior art keywords
paths
event
subtree
computer
states
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
DE112014001997.6T
Other languages
English (en)
Inventor
Iosif V. Onut
Paul Ionescu
Omer Trip
Seyed Ali Moosavi Byooki
Guy-Vincent Jourdan
Gregor von Bochmann
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Publication of DE112014001997T5 publication Critical patent/DE112014001997T5/de
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/10Text processing
    • G06F40/12Use of codes for handling textual entities
    • G06F40/14Tree-structured documents
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/95Retrieval from the web
    • G06F16/951Indexing; Web crawling techniques
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • G06F16/2228Indexing structures
    • G06F16/2246Trees, e.g. B+trees
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/80Information retrieval; Database structures therefor; File system structures therefor of semi-structured data, e.g. markup language structured data such as SGML, XML or HTML
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/95Retrieval from the web
    • G06F16/957Browsing optimisation, e.g. caching or content distillation
    • G06F16/9577Optimising the visualization of content, e.g. distillation of HTML documents
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/95Retrieval from the web
    • G06F16/958Organisation or management of web site content, e.g. publishing, maintaining pages or automatic linking
    • G06F16/986Document structures and storage, e.g. HTML extensions

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Software Systems (AREA)
  • Health & Medical Sciences (AREA)
  • Artificial Intelligence (AREA)
  • Audiology, Speech & Language Pathology (AREA)
  • Computational Linguistics (AREA)
  • General Health & Medical Sciences (AREA)
  • Information Transfer Between Computers (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

Eine der Veranschaulichung dienende Ausführungsform eines Verfahrens zum Kennzeichnen von Client-Zuständen empfängt eine Reihe von Pfaden, die für ein Document Object Model (DOM) stehen, das zu einer Webseite einer erweiterten Internet-Anwendung gehört, und entnimmt für jeden Pfad in der Reihe der empfangenen Pfade einen Teilbaum, als Teilbaum X, für einen aktuellen Pfad. Das Verfahren durchläuft alle bekannten Teilpfade unter dem aktuellen Pfad und löscht entsprechende Teilbäume aus dem Teilbaum X und liest den Inhalt des Teilbaums X und ermittelt Zustände des Teilbaums X, um einen Zustand X zu bilden. Der Zustand X wird zu einer Reihe von aktuellen Zuständen hinzugefügt und als Reaktion auf eine Feststellung, dass es keine weiteren Pfade gibt, sendet es die Reihe der aktuellen Zustände der erweiterten Internet-Anwendung zurück.

Description

  • Technisches Gebiet
  • Diese Offenbarung betrifft allgemein Zustände von Anwendungen in einem Datenverarbeitungssystem und insbesondere das Kennzeichnen von Client-Zuständen einer erweiterten Internet-Anwendung in dem Datenverarbeitungssystem.
  • Stand der Technik
  • Ein Webcrawler muss über ein Mittel verfügen, um Client-Zustände einer Webanwendung, die er durchsucht, zu kennzeichnen, um ein vernünftiges Modell der Webanwendung als Zustandsmaschine ableiten zu können.
  • Üblicherweise wurde eine Verweisadresse (Universal Resource Locator (URL)) als eindeutige Kennung für einen Zustand einer Webanwendung verwendet, da man in einer Welt herkömmlicher Webanwendungen von der sicheren Annahme ausging, dass es zwischen Client-Zuständen einer Webanwendung und zugehörigen URLs eine Eins-zu-Eins-Beziehung gibt. Das Durchsuchen von erweiterten Internet-Anwendungen, die häufig eine Bündelung von Technologien verwenden, die gemeinsam als Aufrufe des asynchronen JavaScript® und der erweiterbaren Auszeichnungssprache Extensible Markup Language (XML), als Aufrufe des asynchronen JavaScript und XML-(AJAX-)Aufrufe bezeichnet werden, stellte jedoch eine Herausforderung dar, da die URL bei diesen Webanwendungen einen Client-Zustand der Webanwendung nicht eindeutig kennzeichnet. Folglich muss der Crawler über ein alternatives Verfahren zum Kennzeichnen von Client-Zuständen verfügen.
  • Aktuelle Lösungen erstellen üblicherweise eine Momentaufnahme eines Document Object Model (DOM) von einem Client-Zustand zu einem bestimmten Zeitpunkt, entfernen unwesentliche und unwichtige Daten aus den erfassten Daten der Momentaufnahme und weisen einem sich daraus ergebendem DOM eine eindeutige Kennung zu, beispielsweise, indem sie einen Hash des DOM der jeweiligen Instanz berechnen. Bei Verwendung dieser Technik betrachtet der Crawler, wann immer er auf ein DOM trifft, das zuvor nicht angetroffen worden ist, das neue DOM als einen neuen Zustand der Webanwendung.
  • Eine Benutzeroberfläche einer erweiterten Internet-Anwendung besteht üblicherweise jedoch aus mehreren verschiedenen Teilen, von denen jeder unabhängig von anderen Teilen mit einem Benutzer in Dialogverkehr tritt. In einem Fall von Mashup-Anwendungen und Webseiten beispielsweise, die Fensterobjekte (Widgets) enthalten, agieren die einzelnen Anwendungen und die Fensterobjekte gewöhnlich unabhängig voneinander. Folglich können dem Benutzer ohne Weiteres verschiedene Kombinationen von Fensterobjekten auf unterschiedliche Weise angezeigt werden, die neue DOMs bilden, welche vorher nie angetroffen wurden.
  • Ein typischer Nachteil der aktuellen Lösungen besteht in einer explosionsartigen Zunahme der Anzahl von Zuständen, da es sich bei dem jeweiligen Auftreten von DOMs, die nie zuvor angetroffen wurden und für neue Anwendungszustände gehalten werden, in Wirklichkeit lediglich um eine neue Kombination von Teilen eines bereits bekannten DOM handelt. Folglich kann die Eigenschaft der Unabhängigkeit der Teile der Benutzeroberfläche leicht zu einer explosionsartigen Zunahme der Anzahl von Zustandsräumen führen, da die Anzahl der unabhängigen Teile in einer Webanwendung zunimmt, was im Endeffekt die Möglichkeit des Webcrawlers, das Durchsuchen einer bestimmten Webanwendung abzuschließen, verringert, wenn der Crawler eine Vorgehensweise zur Angabe eines aktuellen Zustands wählt.
  • Ein einfaches Beispiel, welches das Problem veranschaulicht, ist in 1 bis 4 einer Anleitung zum Erstellen einer Benutzeroberfläche gezeigt, die eine Vielzahl von Fensterobjekten verwendet und unter http://net.tutsplus.com/tutorials/javascriptajax/inettuts/?search_index=1 aufgerufen werden kann.
  • Bezug nehmend auf 1 ist ein Screenshot (Bildschirmfoto) eines Teils einer Benutzeroberfläche gezeigt, in der DOM 1 = Zustand 1. Betrachten wir eine Anwendung des Beispiels, das nur 3 Fensterobjekte enthält, das in 1 gezeigt ist, in der ein Anfangszustand als DOM 1 = Zustand 1 gekennzeichnet ist. Jedes Mal, wenn entweder das Fensterobjekt 1 102, das Fensterobjekt 2 104 oder das Fensterobjekt 3 106 geöffnet wird, wird der Inhalt des geöffneten Fensterobjekts von einem Server abgerufen und in das DOM der Seite eingefügt, die auf der Benutzeroberfläche 100 dargestellt wird.
  • Bezug nehmend auf 2 ist ein Screenshot eines Teils der Benutzeroberfläche 100 gezeigt, in der DOM 2 = Zustand 2. Wenn ein Crawler das Fensterobjekt 1 102 auf der Seite erweitert, wie in 1 gezeigt ist, tritt ein neuer Zustand ein, wie in 2 gezeigt ist. 2 stellt folglich DOM 2 = Zustand 2 für einen Teil der Anwendung dar.
  • Bezug nehmend auf 3 ist ein Screenshot des Teils der Benutzeroberfläche 100 von 2 gezeigt, in der DOM 3 = Zustand 3. Wenn der Crawler zusätzlich zum Fensterobjekt 1 102, wie in 2, darüber hinaus noch das Fensterobjekt 2 104 erweitert, ergibt sich ein weiterer neuer Zustand, wie in 3 gezeigt ist, in der DOM 3 = Zustand 3. Man beachte, dass der Zustand 3 jedoch lediglich eine Kombination aus der Erweiterung der vorherigen beiden Fensterobjekte, des Fensterobjekts 1 102 und des Fensterobjekts 2 104, ist, die zuvor geöffnet wurden.
  • Bezug nehmend auf 4 ist ein Screenshot eines Teils der Benutzeroberfläche 100 gezeigt, in der DOM 4 = Zustand 4 gezeigt ist. Wenn der Crawler in den Zustand 1 zurückkehrt und nur das Fensterobjekt 2 104 erweitert, tritt ein neuer Zustand ein, in dem DOM 4 = Zustand 4, wie in 4 gezeigt ist.
  • Das Beispiel veranschaulicht, wie die drei Fensterobjekte auf einer Seite der Webanwendung leicht zu einer Auflösung des Zustands führen können, da jedes Fensterobjekt unabhängig von den anderen andere interne Zustände aufweisen kann und entsprechende Kombinationen von Fensterobjekten aufgrund des Eintretens einer Vielzahl von Zuständen tatsächlich einen Webcrawler deaktivieren können. Bei der Auswertung der Zustände des Beispiels kann ein menschlicher Benutzer leicht erkennen, dass im Zustand 3 von 3 enthaltene Informationen redundant sind; sie bestehen einfach aus einer Verbindung des Zustands 2 und des Zustands 4. Die Kombination ist für einen Webcrawler, der ein vollständiges DOM als Mittel zur Erzeugung von Zuständen verwendet, jedoch nicht erkennbar. Jeder Zustand wird folglich als eine eindeutige DOM-Instanz behandelt.
  • Gebräuchliche vorhandene Techniken zur Behandlung von Bedingungen, wie sie in dem Beispiel dargestellt sind, finden sich in den folgenden Referenzen: [1] S. Choudhary, M. Dincturk, G. Bochmann, G.-V. Jourdan, I. Onut und P. Ionescu, ”Solving Some Modeling Challenges when Testing Rich Internet Applications for Security,” in Third International Workshop on Security Testing (SECTEST 2012), 2012. [2] M. Dincturk, S. Choudhary, G. Bochmann, G. Jourdan, I. Onut und P. Ionescu, ”A Statistical Approach for Efficient Crawling of Rich Internet Applications,” in International Conference on Web Engineering (ICWE 2012), Berlin, Deutschland, 2012. [3] Benjamin. K, A Strategy for Efficient Crawling of Rich Internet Applications, Master's Thesis, University of Ottawa, 2010. [4] J. Bau, E. Bursztein, D. Gupta und J. Mitchell, ”State of the Art: Automated Black-Box Web Application Vulnerability Testing,” IEEE Symposium on Security and Privacy, Seiten 332 bis 345, 2010. [5] C, Olston. Und M, Najork., ”Web Crawling,” Foundations and Trends in Information Retrieval, Band 4, Nr. 3, Seiten 175 bis 246, 2010. [6] K. Benjamin, G. Bochmann, M. Dincturk, G.-V. Jourdan und I. Onut, ”A Strategy for Efficient Crawling of Rich Internet Applications,” in Web Engineering: 11th International Conference, ICWE, Paphos, Zypern, 2011. [7] C. Duda, G. Frey, D. Kossmann und C. Zhou, ”AJAXSearch: Crawling, Indexing and Searching Web 2.0 Applications,” in VLDB, 2008. [8] C. Duda, G. Frey, D. Kossmann, R. Matter und C. Zohu, ”AJAX Crawl: Making AJAX Applications Searchable,” in IEEE 25th International Conference on Data Engineering, 2009. [9] A. Mesbah und A. v. Deursen, ”Exposing the Hidden Web Induced by AJAX,” TUD-SERG Technical Report Series, 2008. [10] D. Roest, A. Mesbah und A. v. Deursen, ”Regression Testing Ajax Applications: Coping with Dynamism,” in Third International Conference on Software Testing, Verification and Validation (ICST 2010), 2010. [11] C. Bezemer, A. Mesbah und A. v. Deursen, ”Automated Security Testing of Web Widget Interactions,” in Foundations of Software Engineering Symposium (FSE), 2009. [12] A. Mesbah und A. Deursen, ”Invariant-Based Automatic Testing of Ajax User Interfaces,” in International Conference on Software Engineering (ICSE'09), 2009. [13] A. Mesbah, E. Bozdag und A. v. Deursen, ”Crawling AJAX by Inferring User Inferface State Changes,” in 8th Int. Conf. Web Engineering, ICWE, 2008. [14] G. Frey, Indexing AJAX Web Applications, Master Thesis, ETH Zürich, 2007. [15] D. Amalfitano, A. Fasolino und P. Tramontana, ”Reverse Engineering Finite State Machines from Rich Internet Applications,” in 15th Working Conference on Reverse Engineering, Washington, DC, USA, 2008. [16] D. Amalfitano, A. R. Fasolino und P. Tramontana, ”An Iterative Approach for the Reverse Engineering of Rich Internet Applications,” in International Conference on Internet and Web Applications and Services (ICIW), 2010. [17] D. Amalfitano, A. Fasolino, A. Polcaro und P. Tramontana, ”DynaRIA: A Tool for Ajax Web Application Comprehension,” in IEEE 18th International Conference on Program Comprehension (ICPC), 2010. [18] A. Marchetto, P. Tonella und F. Ricca., ”State-Based Testing of Ajax Web Applications,” in International Conference on Software Testing, Verification and Validation (ICST), 2008. [19] Z. Peng, N. He, C. Jiang, Z. Li, L. Xu, Y. Li und Y. Ren, ”Graph-based ajax crawl: Mining data from rich internet applications,” in International Conference on Computer Science and Electronic Engineering (ICCSEE 2012), 2012. [20] A. Mesbah, A. Deursen und S. Lenselink, ”Crawling Ajax-based Web Applications through Dynamic Analysis of User Interface State Changes,” ACM Transactions on the Web (TWEB), Band 6, Nr. 1, Seite a23, 2011. [21] Benjamin, K., Bochmann, G. v., Jourdan, G. V. und Onut, I. V.: ”Some Modeling Challenges when Testing Rich Internet Applications for Security” von dem First International Workshop on Modeling and Detection of Vulnerabilities (2010).
  • KURZDARSTELLUNG DER ERFINDUNG
  • Gemäß einer Ausführungsform empfängt ein von einem Computer ausgeführtes Verfahren zum Kennzeichnen von Client-Zuständen eine Reihe von Pfaden, die für ein Document Object Model (DOM) stehen, das zu einer Webseite einer erweiterten Internet-Anwendung gehört, und entnimmt für jeden Pfad in der Reihe von Pfaden, die von einem Prozessor empfangen wurden, einen Teilbaum, als Teilbaum X, für einen aktuellen Pfad. Das von einem Computer ausgeführte Verfahren durchläuft des Weiteren alle bekannten Teilpfade unter dem aktuellen Pfad und löscht entsprechende Teilbäume aus dem Teilbaum X; liest den Inhalt des Teilbaums X und ermittelt Zustände des Teilbaums X, um einen Zustand X zu bilden; und fügt den Zustand X zu einer Reihe von aktuellen Zuständen hinzu. Als Reaktion auf eine Feststellung, dass es keine weiteren Pfade gibt, sendet das von einem Computer ausgeführte Verfahren die Reihe der aktuellen Zustände der erweiterten Internet-Anwendung zurück.
  • Gemäß einer weiteren Ausführungsform weist ein Computerprogrammprodukt zum Kennzeichnen von Client-Zuständen eine von einem Computer beschreibbare Speichereinheit auf, die darauf gespeicherten, von einem Computer ausführbaren Programmcode enthält. Der von einem Computer ausführbare Programmcode weist von einem Computer ausführbaren Programmcode auf, um eine Reihe von Pfaden zu empfangen, die für ein Document Object Model (DOM) stehen, das zu einer Webseite einer erweiterten Internet-Anwendung gehört; von einem Computer ausführbaren Programmcode für jeden Pfad in der Reihe von Pfaden, die von dem Prozessor empfangen wurden, um einen Teilbaum, als Teilbaum X, für einen aktuellen Pfad zu entnehmen; von einem Computer ausführbaren Programmcode, um alle bekannten Teilpfade unter dem aktuellen Pfad zu durchlaufen und entsprechende Teilbäume aus dem Teilbaum X zu löschen; von einem Computer lesbaren Programmcode, um den Inhalt des Teilbaums X zu lesen und um Zustände des Teilbaums X zu ermitteln, um einen Zustand X zu bilden; von einem Computer ausführbaren Programmcode, um den Zustand X zu einer Reihe von aktuellen Zuständen hinzuzufügen; und von einem Computer ausführbaren Programmcode, um den Zustand X zu einer Reihe von aktuellen Zuständen hinzuzufügen; und von einem Computer ausführbaren Programmcode, der auf eine Feststellung anspricht, dass es keine weiteren Pfade gibt, um die Reihe der aktuellen Zustände der erweiterten Internet-Anwendung zurückzusenden.
  • Gemäß einer weiteren Ausführungsform weist eine Vorrichtung zum Kennzeichnen von Client-Zuständen eine Übertragungsstruktur (communications fabric); einen mit der Übertragungsstruktur verbundenen Hauptspeicher, wobei der Hauptspeicher von einem Computer ausführbaren Programmcode enthält; eine mit der Übertragungsstruktur verbundene Übertragungseinheit; eine mit der Übertragungsstruktur verbundene Eingabe-/Ausgabeeinheit; einen mit der Übertragungsstruktur verbundenen Bildschirm und eine mit der Übertragungsstruktur verbundene Prozessoreinheit auf. Die Prozessoreinheit führt den von einem Computer ausführbaren Programmcode aus, um die Vorrichtung anzuweisen, eine Reihe von Pfaden zu empfangen, die für ein Document Object Model (DOM) stehen, das zu einer Webseite einer erweiterten Internet-Anwendung gehört, und um für jeden Pfad in der Reihe der empfangenen Pfade einen Teilbaum, als Teilbaum X, für einen aktuellen Pfad zu entnehmen. Die Prozessoreinheit führt des Weiteren den von einem Computer ausführbaren Programmcode aus, um die Vorrichtung anzuweisen, alle bekannten Teilpfade unter dem aktuellen Pfad zu durchlaufen und entsprechende Teilbäume aus dem Teilbaum X zu löschen; den Inhalt des Teilbaums X zu lesen und Zustände des Teilbaums X zu ermitteln, um einen Zustand X zu bilden; den Zustand X zu einer Reihe von aktuellen Zuständen hinzuzufügen; und als Reaktion auf eine Feststellung, dass es keine weiteren Pfade gibt, die Reihe der aktuellen Zustände der erweiterten Internet-Anwendung zurückzusenden.
  • KURZE BESCHREIBUNG DER ZEICHNUNGEN
  • Im Interesse eines vollständigeren Verständnisses dieser Offenbarung wird nun Bezug auf die folgende kurze Beschreibung, in Verbindung mit den beiliegenden Zeichnungen und der ausführlichen Beschreibung, genommen, wobei gleiche Bezugszahlen gleiche Teile darstellen.
  • 1 ist ein Screenshot eines Teils einer Benutzeroberfläche, in der DOM 1 = Zustand 1;
  • 2 ist ein Screenshot eines Teils einer Benutzeroberfläche, in der DOM 2 = Zustand 2;
  • 3 ist ein Screenshot eines Teils einer Benutzeroberfläche, in der DOM 3 = Zustand 3;
  • 4 ist ein Screenshot eines Teils einer Benutzeroberfläche, in der DOM 4 = Zustand 4;
  • 5 ist ein Blockschaubild eines beispielhaften Netzwerk-Datenverarbeitungssystems, das in einer Ausführungsform der Offenbarung ein Zustandskennzeichnungssystem enthält;
  • 6 ist ein Blockschaubild eines beispielhaften Datenverarbeitungssystems, das in einer Ausführungsform der Offenbarung ein Zustandskennzeichnungssystem enthält;
  • 7 ist ein Blockschaubild eines Zustandskennzeichnungssystems, das für verschiedene Ausführungsformen der Offenbarung eingesetzt werden kann;
  • 8 ist ein Screenshot eines Teils einer Benutzeroberfläche, in der der Zustand 3 von 3 gemäß einer Ausführungsform der Offenbarung als eine Reihe von mehreren Zuständen dargestellt ist;
  • 9 ist eine tabellarische Darstellung einer Datenstruktur, die eine Liste aller Pfade enthält, welche gemäß einer Ausführungsform der Offenbarung einen Prozess des Zustandskennzeichnungssystems von 7 verwenden;
  • 10 ist ein Codefragment von Pseudocode, um mit Hilfe des Zustandskennzeichnungssystems von 7 gemäß einer Ausführungsform der Offenbarung einen Zustand einer Anwendung zu ermitteln;
  • 11 stellt einen Ablaufplan eines Prozesses dar, um mit Hilfe des Zustandskennzeichnungssystems von 7 gemäß einer Ausführungsform der Offenbarung einen Zustand einer Anwendung zu ermitteln; und
  • 12 stellt einen Ablaufplan eines Prozesses dar, um mit Hilfe des Zustandskennzeichnungssystems von 7 gemäß einer Ausführungsform der Offenbarung unabhängige Teilbäume zu erkennen.
  • AUSFÜHRLICHE BESCHREIBUNG
  • Obgleich nachstehend eine der Veranschaulichung dienende Ausführungsart von einer oder mehreren Ausführungsformen aufgezeigt wird, können die offenbarten Systeme und/oder Verfahren mittels einer beliebigen Anzahl von Techniken realisiert werden. Die Offenbarung sollte in keiner Weise auf die der Veranschaulichung dienenden Ausführungsarten, nachstehend abgebildeten Zeichnungen und Techniken einschließlich der hier veranschaulichten und beschriebenen beispielhaften Ausgestaltungs- und Ausführungsarten beschränkt sein, sondern kann innerhalb des Umfangs der beigefügten Ansprüche zusammen mit ihrem vollständigen Umfang an Äquivalenten geändert werden.
  • Der Fachmann wird als vorteilhaft erkennen, dass Aspekte der vorliegenden Offenbarung als ein System, ein Verfahren oder ein Computer-Programmprodukt realisiert werden können. Folglich können Aspekte der vorliegenden Offenbarung die Form einer ganz in Hardware realisierten Ausführungsform, einer ganz in Software realisierten Ausführungsform (einschließlich Firmware, residenter Software, Mikrocode usw.) oder einer Ausführungsform annehmen, die Software- und Hardware-Aspekte in sich vereint, welche hier alle allgemein als eine ”Schaltung”, ein ”Modul” oder ein ”System” bezeichnet werden können. Überdies können Aspekte der vorlegenden Erfindung die Form eines Computerprogrammprodukts annehmen, das sich auf einem oder mehreren von einem Computer lesbaren Datenträger(n) befindet, auf dem beziehungsweise denen von einem Computer lesbarer Programmcode ausgebildet ist.
  • Jede beliebige Kombination aus einer oder mehreren von einem Computer lesbaren Datenspeichereinheiten kann verwendet werden. Eine von einem Computer lesbare Datenspeichereinheit kann zum Beispiel, ohne darauf beschränkt zu sein, ein(e) elektronische(s), magnetische(s), optische(s) oder Halbleitersystem, -vorrichtung oder -einheit oder eine beliebige geeignete Kombination des Vorstehenden sein, sie umfasst jedoch keine Weitergabemedien. Zu konkreteren Bespielen (wobei die Liste keinen Anspruch auf Vollständigkeit erhebt) für die von einem Computer lesbaren Datenspeichereinheiten würden folgende gehören: eine Diskette eines tragbaren Computers, eine Festplatte, ein Direktzugriffsspeicher (RAM), ein Nur-Lese-Speicher (ROM), ein löschbarer programmierbarer Nur-Lese-Speicher (EPROM oder Flash-Speicher), ein tragbarer Compact-Disk-Nur-Lese-Speicher (CD-ROM), eine optische Speichereinheit oder eine magnetische Speichereinheit oder jede beliebige geeignete Kombination des Vorstehenden, jedoch umfassen sie keine Weitergabemedien. Im Rahmen dieses Schriftstücks kann eine von einem Computer lesbare Datenspeichereinheit jede beliebige physisch greifbare Einheit sein, die ein Programm zur Verwendung durch ein Anweisungsausführungssystem, eine Anweisungsausführungsvorrichtung oder -einheit oder zur Verwendung in Verbindung mit einem Anweisungsausführungssystem, einer Anweisungsausführungsvorrichtung oder -einheit speichern kann.
  • Computerprogrammcode zur Durchführung von Operationen für Aspekte der vorliegenden Offenbarung kann in einer beliebigen Kombination aus einer oder mehreren Programmiersprachen einschließlich einer objektorientierten Programmiersprache, wie beispielsweise Java®, Smalltalk, C++ oder dergleichen, sowie in herkömmlichen prozeduralen Programmiersprachen wie beispielsweise der Programmiersprache ”C” oder in ähnlichen Programmiersprachen geschrieben sein. Java und alle auf Java beruhenden Warenzeichen und Logos sind Warenzeichen der Oracle Corporation und/oder ihrer Tochterunternehmen in den Vereinigten Staaten von Amerika, anderen Ländern oder sowohl in den Vereinigten Staaten von Amerika als auch in anderen Ländern. Die Ausführung des Programmcodes kann vollständig auf dem Computer des Benutzers, teilweise auf dem Computer des Benutzers, als eigenständiges Software-Paket, teilweise auf dem Computer des Benutzers und teilweise auf einem fernen Computer oder vollständig auf dem fernen Computer oder Server erfolgen. Im letzteren Szenario kann der ferne Computer mit dem Computer des Benutzers über jede beliebige Art eines Netzwerks einschließlich eines lokalen Netzes (LAN) oder eines Weitverkehrsnetzes (WAN) verbunden sein oder die Verbindung kann zu einem externen Computer (zum Beispiel über das Internet mittels eines Internet-Dienstanbieters) hergestellt werden.
  • Aspekte der vorliegenden Offenbarung werden nachstehend mit Bezug auf Darstellungen in Ablaufplänen und/oder Blockschaubilder von Verfahren, Vorrichtungen (Systemen) und Computerprogrammprodukten gemäß Ausführungsformen der Erfindung beschrieben. Es versteht sich, dass jeder Block der Darstellungen in den Ablaufplänen und/oder der Blockschaubilder sowie Kombinationen aus Blöcken in den Darstellungen der Ablaufpläne und/oder den Blockschaubildern mittels Anweisungen eines Computerprogramms realisiert werden können.
  • Diese Anweisungen eines Computerprogramms können einem Prozessor eines Mehrzweckcomputers, eines Spezialcomputers oder einer anderen programmierbaren Datenverarbeitungsvorrichtung bereitgestellt werden, um eine Maschine zu erzeugen, so dass die Anweisungen, die über den Prozessor des Computers oder einer anderen programmierbaren Datenverarbeitungsvorrichtung ausgeführt werden, ein Mittel zur Ausführung der Funktionen/Vorgänge erzeugen, die in dem Block oder den Blöcken der Ablaufpläne und/oder der Blockschaubilder angegeben sind.
  • Diese Anweisungen eines Computerprogramms können auch in einer von einem Computer lesbaren Datenspeichereinheit gespeichert werden, die einen Computer der eine andere programmierbare Datenverarbeitungsvorrichtung anweisen kann, auf eine bestimmte Art und Weise zu funktionieren, so, dass die in der von einem Computer lesbaren Datenspeichereinheit gespeicherten Anweisungen einen Herstellungsgegenstand erzeugen, der Anweisungen enthält, die die Funktion/den Vorgang ausführen, welche beziehungsweise welcher in dem Block oder den Blöcken der Ablaufpläne oder der Blockschaubilder angegeben ist.
  • Die Anweisungen eines Computerprogramms können auch auf einen Computer oder eine andere programmierbare Datenverarbeitungsvorrichtung geladen werden, um die Durchführung einer Reihe von Betriebsschritten auf dem Computer oder einer anderen programmierbaren Vorrichtung zu bewirken, um einen von einem Computer ausgeführten Prozess zu erzeugen, so dass die Anweisungen, die auf dem Computer oder einer anderen programmierbaren Vorrichtung ausgeführt werden, Prozesse zur Ausführung der Funktionen/Vorgänge ermöglichen, die in dem Block oder den Blöcken der Ablaufpläne und/oder der Blockschaubilder angegeben sind.
  • Nun Bezug auf die Figuren und insbesondere Bezug auf 5 und 6 nehmend, sind beispielhafte Übersichtsdarstellungen von Datenverarbeitungsumgebungen gezeigt, in denen der Veranschaulichung dienende Ausführungsformen realisiert werden können. Es dürfte sich verstehen, dass es sich bei 5 und 6 lediglich um Beispiele handelt und dass sie in Bezug auf die Umgebungen, in denen verschiedene Ausführungsformen realisiert werden können, keinerlei Beschränkung bestätigen oder andeuten sollen. An den dargestellten Umgebungen können viele Änderungen vorgenommen werden.
  • 5 stellt ein Netzwerk aus Datenverarbeitungssystemen bildlich dar, in dem der Veranschaulichung dienende Ausführungsformen realisiert werden können. Das Netzwerk-Datenverarbeitungssystem 500 ist ein aus Computern bestehendes Netzwerk, in dem die der Veranschaulichung dienenden Ausführungsformen realisiert werden können. Das Netzwerk-Datenverarbeitungssystem 500 enthält das Netzwerk 502, bei dem es sich um das Medium handelt, das zur Bereitstellung von Datenübertragungsverbindungen zwischen verschiedenen Einheiten und Computern verwendet wird, die in dem Netzwerk-Datenverarbeitungssystem 500 miteinander verbunden sind. Das Netzwerk 502 kann Verbindungen wie zum Beispiel drahtgebundene, drahtlose Datenübertragungsverbindungen oder Lichtwellenleiterkabel enthalten.
  • In dem gezeigten Beispiel sind der Server 504 und der Server 506 zusammen mit der Speichereinheit 508 an das Netzwerk 502 angeschlossen. Überdies sind die Clients 510, 512 und 514 an das Netzwerk 502 angeschlossen. Die Clients 510, 512 und 514 können zum Beispiel Personal Computer oder Netzwerkcomputer sein. In dem gezeigten Beispiel stellt der Server 504 den Clients 510, 512 und 514 Daten wie zum Beispiel Bootdateien, Betriebssystem-Abbilder und Anwendungen zur Verfügung. In diesem Beispiel sind die Clients 510, 512 und 514 Clients des Servers 504. Das Netzwerk-Datenverarbeitungssystem 500 kann weitere Server, Clients und andere Einheiten enthalten, die nicht gezeigt sind.
  • In dem gezeigten Beispiel ist das Netzwerk-Datenverarbeitungssystem 500 das Internet, wobei das Netzwerk 502 einen weltweiten Verbund von Netzwerken und Gateways darstellt, die die Transmission-Control-Protocol/Internet Protocol-(TCP/IP-)Folge von Protokollen verwenden, um miteinander Daten auszutauschen. Im Mittelpunkt des Internet befindet sich ein Backbone-Netz aus Hochgeschwindigkeits-Datenübertragungsleitungen zwischen Hauptknoten oder Hostcomputern, die aus Tausenden von kommerziellen, staatlichen, in Bildungseinrichtungen genutzten und anderen Computersystemen bestehen, welche Daten und Nachrichten weiterleiten. Natürlich kann das Netzwerk-Datenverarbeitungssystem 500 auch in Form von mehreren verschiedenen Arten von Netzwerken wie zum Beispiel einem Intranet, einem lokalen Netz (LAN) oder einem Weitverkehrsnetz (WAN) realisiert werden. 5 soll lediglich Beispielcharakter haben und ist nicht als architektonische Einschränkung der verschiedenen beispielhaft veranschaulichten Ausführungsformen gedacht.
  • Bezug nehmend auf 6 ist ein Blockschaubild eines beispielhaften Datenverarbeitungssystems gezeigt, das für verschiedene Ausführungsformen der Offenbarung eingesetzt werden kann. In diesem der Veranschaulichung dienenden Beispiel enthält das Datenverarbeitungssystem 600 eine Übertragungsstruktur 602, die Übertragungen zwischen der Prozessoreinheit 604, dem Hauptspeicher 606, dem persistenten Speicher 608, der Übertragungseinheit 610, der Eingabe-/Ausgabe-(E/A)Einheit 612 und dem Bildschirm 614 ermöglicht.
  • Die Prozessoreinheit 604 dient zur Ausführung von Anweisungen für Software, die in den Hauptspeicher 606 geladen werden kann. Bei der Prozessoreinheit 604 kann es sich in Abhängigkeit von der im Einzelfall gewählten Ausführungsart um eine aus einem oder mehreren Prozessoren bestehenden Gruppe oder um einen Mehrprozessorkern handeln. Ferner kann die Prozessoreinheit 604 mittels einem oder mehreren heterogenen Prozessorsystemen realisiert werden, bei denen sich ein Hauptprozessor mit sekundären Prozessoren auf einem einzigen Chip befindet. Als ein weiteres der Veranschaulichung dienendes Beispiel kann es sich bei der Prozessoreinheit 604 um ein symmetrisches Mehrprozessorsystem handeln, das mehrere Prozessoren von demselben Typ enthält.
  • Der Hauptspeicher 606 und der persistente Speicher 608 sind Beispiele für Speichereinheiten 616. Eine Speichereinheit ist eine Hardwarekomponente, die Informationen wie zum Beispiel Daten, Programmcode in funktionsfähiger Form und/oder andere geeignete Informationen, ohne darauf beschränkt zu sein, entweder temporär und/oder dauerhaft speichern kann. Der Hauptspeicher 606 in diesen Beispielen kann zum Beispiel ein Direktzugriffsspeicher oder eine beliebige andere geeignete flüchtige oder nicht flüchtige Speichereinheit sein. Der persistente Speicher 608 kann in Abhängigkeit von der im Einzelfall gewählten Ausführungsart verschiedene Formen annehmen. Beispielsweise kann der persistente Speicher 608 eine oder mehrere Komponenten oder Einheiten enthalten. Auch kann der persistente Speicher 608 zum Beispiel ein Festplattenlaufwerk, ein Flash-Speicher, eine wieder beschreibbare optische Platte, ein wieder beschreibbares Magnetband oder irgendeine Kombination des Vorstehenden sein. Die von dem persistenten Speicher 608 verwendeten Datenträger können auch auswechselbar sein. Zum Beispiel kann ein auswechselbares Festplattenlaufwerk für den persistenten Speicher 608 verwendet werden.
  • Die Übertragungseinheit 610 ermöglicht in diesen Beispielen den Datenaustausch mit anderen Datenverarbeitungssystemen oder -einheiten. In diesen Beispielen ist die Übertragungseinheit 610 eine Netzschnittstellenkarte. Die Übertragungseinheit 610 kann durch die Verwendung von physischen oder drahtlosen oder aber durch die Verwendung von physischen als auch drahtlosen Datenübertragungsverbindungen Übertragungen ermöglichen.
  • Die Eingabe-/Ausgabeeinheit 612 ermöglicht die Eingabe und Ausgabe von Daten an andere beziehungsweise von anderen Einheiten, die an das Datenverarbeitungssystem 600 angeschlossen sind können. Beispielsweise kann die Eingabe-/Ausgabeeinheit 612 eine Verbindung für die Benutzereingabe über eine Tastatur, eine Maus und/oder eine andere geeignete Eingabeeinheit bereitstellen. Überdies kann die Eingabe-/Ausgabeeinheit 612 eine Ausgabe an einen Drucker senden. Der Bildschirm 614 stellt einen Mechanismus bereit, um einem Benutzer Informationen anzuzeigen.
  • Anweisungen für das Betriebssystem, Anwendungen und/oder Programme können sich in den Speichereinheiten 616 befinden, die mit der Prozessoreinheit 604 über die Übertragungsstruktur 602 Daten austauschen. In diesen der Veranschaulichung dienenden Beispielen befinden sich die Anweisungen in einer funktionsfähigen Form auf dem persistenten Speicher 608. Diese Anweisungen können zur Ausführung durch die Prozessoreinheit 604 in den Hauptspeicher 606 geladen werden. Die Prozesse der verschiedenen Ausführungsformen können von der Prozessoreinheit 604 mittels von einem Computer ausgeführten Anweisungen durchgeführt werden, welche sich in einem Hauptspeicher wie zum Beispiel dem Hauptspeicher 606 befinden können.
  • Diese Anweisungen werden als Programmcode, von einem Computer benutzbarer Programmcode oder von einem Computer lesbarer Programmcode bezeichnet, der von einem Prozessor in der Prozessoreinheit 604 gelesen und ausgeführt werden kann. Der Programmcode in den verschiedenen Ausführungsformen kann auf verschiedenen physischen oder physisch greifbaren, von einem Computer beschreibbaren Speichermedien ausgebildet sein, wie zum Beispiel dem Hauptspeicher 606 oder dem persistenten Speicher 608.
  • Der Programmcode 618 befindet sich in funktionsfähiger Form auf einem von einem Computer lesbaren Datenträger 620, der in einer Ausführungsform selektiv auswechselbar ist, und er kann zur Ausführung durch die Prozessoreinheit 604 auf das Datenverarbeitungssystem 600 geladen oder an es übertragen werden kann. Der Programmcode 618 und der von einem Computer lesbare Datenträger 620 bilden in diesen Beispielen das Computerprogrammprodukt 622. In einem Beispiel kann der von einem Computer lesbare Datenträger 620 in physisch greifbarer Form wie zum Beispiel einer optischen Platte oder einer Magnetplatte vorliegen, die in ein Laufwerk oder eine andere Einheit eingefügt oder gelegt wird, das beziehungsweise die Teil des persistenten Speichers 608 ist, um an eine Speichereinheit wie zum Beispiel ein Festplattenlaufwerk übertragen zu werden, das Teil des persistenten Speichers 608 ist. In einer physisch greifbaren Form kann das von einem Computer lesbare Speichermedium 620 auch die Form eines persistenten Speichers wie zum Beispiel eines Festplattenlaufwerks, eines Speichersticks oder eines Flashspeichers annehmen, der mit dem Datenverarbeitungssystem 600 verbunden ist. Die physisch greifbare Form des von einem Computer lesbaren Datenträgers 620 wird auch als ein von einem Computer beschreibbares Speichermedium oder als eine von einem Computer lesbare Datenspeichereinheit bezeichnet. In bestimmten Fällen ist der von einem Computer lesbare Datenträger 620 gegebenenfalls nicht auswechselbar. Die Ausführungsformen des von einem Computer beschreibbaren Speichermediums oder einer von einem Computer lesbaren Datenspeichereinheit schließen keine von einem Computer lesbaren Übertragungsmedien oder von einem Computer lesbaren Signaldatenträger ein.
  • Alternativ kann der Programmcode 618 von dem von einem Computer lesbaren Datenträger 620 über eine Datenübertragungsverbindung an die Übertragungseinheit 610 und/oder über eine Verbindung zur Eingabe-/Ausgabeeinheit 612 an das Datenverarbeitungssystem 600 übertragen werden. Die Datenübertragungsverbindung und/oder die Verbindung kann in den der Veranschaulichung dienenden Beispielen physisch oder drahtlos sein.
  • In manchen der Veranschaulichung dienenden Ausführungsformen kann der Programmcode 618 von einer anderen Einheit oder einem Datenverarbeitungssystem zur Verwendung mit dem Datenverarbeitungssystem 600 über ein Netzwerk in den persistenten Speicher 608 heruntergeladen werden. Zum Beispiel kann Programmcode, der in einer von einem Computer beschreibbaren Datenspeichereinheit in einem Server-Datenverarbeitungssystem gespeichert ist, über ein Netzwerk von dem Server in das Datenverarbeitungssystem 600 heruntergeladen werden. Das Datenverarbeitungssystem, das den Programmcode 618 bereitstellt, kann ein Server-Computer, ein Client-Computer oder eine andere Einheit sein, die den Programmcode 618 speichern und übertragen kann.
  • Unter Verwendung des Datenverarbeitungssystems 600 von 6 als Beispiel wird ein von einem Computer ausgeführter Prozess zum Kennzeichnen von Client-Zuständen beschrieben. Die Prozessoreinheit 604 empfängt eine Reihe von Pfaden, die für ein Document Object Model (DOM) stehen, das zu einer Webseite einer erweiterten Internet-Anwendung gehört, und für jeden Pfad in der Reihe von Pfaden, die von der Prozessoreinheit empfangen wurden, entnimmt die Prozessoreinheit 604 einen Teilbaum, als Teilbaum X, für einen aktuellen Pfad. Die Prozessoreinheit 604 durchläuft des Weiteren alle bekannten Teilpfade unter dem aktuellen Pfad und löscht entsprechende Teilbäume aus dem Teilbaum X, liest den Inhalt des Teilbaums X und ermittelt Zustände des Teilbaums X, um einen Zustand X zu bilden, und fügt den Zustand X zu einer Reihe von aktuellen Zuständen hinzu. Die Prozessoreinheit 604, die überdies auf eine Feststellung anspricht, dass es keine weiteren Pfade gibt, sendet die Reihe der aktuellen Zustände der erweiterten Internet-Anwendung zurück.
  • Bezug nehmend auf 7 ist eine Übersichtsdarstellung eines Zustandskennzeichnungssystems gezeigt, das für verschiedene Ausführungsformen der Offenbarung eingesetzt werden kann. Das Zustandskennzeichnungssystem 700 ist ein Beispiel für eine Ausführungsform zum Kennzeichnen von Client-Zuständen einer erweiterten Internet-Anwendung der Offenbarung.
  • Das Zustandskennzeichnungssystem 700 nutzt vorteilhaft die Unterstützung eines zugrunde liegenden Datenverarbeitungssystems wie beispielsweise des Netzwerk-Datenverarbeitungssystems 500 von 5 oder des Datenverarbeitungssystems 600 von 6. Das Zustandskennzeichnungssystem 700 weist mehrere Komponenten auf, darunter das Document Object Model (DOM) 702, die DOM-Momentaufnahme 704, den DOM-Komparator 706, die Teilbaumkennung 708, die Zustandskennung 710, den relaxierten XPath 712, die Listendatenstruktur 714, den Teilbaum-Hash 716 und den erweiterten Webcrawler 718. Die Komponenten brauchen nicht, wie gezeigt, in Form von eindeutigen funktionsfähigen Komponenten realisiert zu sein, sondern können, ohne Verlust der Funktion oder der Leistungsfähigkeit, unter Verwendung von einer höheren oder einer geringeren Anzahl von Komponenten, die gezeigt sind, realisiert werden.
  • Das DOM 702 stellt eine Datenstruktur einer interessierenden Webseite dar. Die Webseite ist eine Zielwebseite, auf die ein Webcrawler wie beispielsweise der erweiterte Webcrawler 718 zugreifen kann. Die Strukturelemente der Webseite werden im Kontext des DOM beschrieben. Das DOM verfügt über eine klar strukturierte Hierarchie von Elementen von einer Wurzel der Seite bis zu einzelnen Blattknoten, die Beziehungen zwischen den Elementen angeben.
  • Die DOM-Momentaufnahme 704 stellt eine Datenstruktur einer Webseite dar, nachdem ein bestimmtes Ereignis ausgeführt worden ist. Bei der Datenstruktur handelt es sich um eine aufgezeichnete Darstellung der gesamten Seite zu einem Zeitpunkt, zu dem die Momentaufnahme erstellt wurde. Üblicherweise wird eine DOM-Momentaufnahme zu einem bestimmten Zeitpunkt erstellt, zum Beispiel bevor ein ganz bestimmtes Ereignis ausgeführt wird und ebenso nachdem das ganz bestimmte Ereignis ausgeführt worden ist. Ein mittels des DOM-Komparators 706 durchgeführter Vergleich des DOM vor der Ausführung des bestimmten Ereignisses und nach der Ausführung des bestimmten Ereignisses bietet eine Möglichkeit, festzustellen, ob es einen Unterschied zwischen den beiden Instanzen (der Vorher- und der Nachher-Momentaufnahme) des DOM gibt.
  • Die Teilbaumkennung 708 stellt eine Funktion bereit, die eine neue dynamische Vorgehensweise zum Kennzeichnen von unabhängigen Teilen des DOM verwendet, wobei die Kennzeichnung darauf beruht, dass die Änderungen in dem DOM während der Ausführung von Ereignissen beobachtet werden. Die Technik der Teilbaumkennung 708 funktioniert auch bei Webseiten, die keine Fensterobjekte haben. Zur Definition von Grenzen wird eine relaxierte Version der XPath-Definitionen verwendet. Ausführungsformen des Zustandskennzeichnungssystems 700 der Offenbarung beschreiben einen Speicherort eines bestimmten Teilbaums in dem DOM 702 auf eine Art und Weise, die sich über verschiedene Zustände der Webanwendung hinweg erfolgreich anwenden lässt. Da manche Attribute, die bei der Erstellung eines XPath-Ausdrucks üblicherweise berücksichtigt werden, zu flüchtig sind (und sich deshalb wahrscheinlich ändern), um als über die Anwendung hinweg konsistent erachtet zu werden, werden die Attribute weggelassen, um mittels des relaxierten XPath 712 eine robustere X Path-Definition zu erhalten, um einen Speicherort eines Teilbaums in verschiedenen DOMs derselben Webanwendung anzugeben.
  • Bei der Adressierung eines Teilbaums in einem DOM, das Zustände enthalten kann, startet ein Prozess einer Teilbaumkennung 708 einen Durchlauf von der Wurzel der interessierenden Webseite bis zur Wurzel des Teilbaums. Die Teilbaumkennung 708 erstellt eine Zeichenfolge (String), die ein Auszeichnungselement (Tag) und konsistente Attribute von jedem der Elemente enthält, die in der durchlaufenen Route angetroffen wurden. Konsistente Attribute sind Attribute, die sich wahrscheinlich nicht ändern, beispielsweise hat ein gleiches Element, das jedoch einen anderen Wert eines konsistenten Attributs hat, eine semantisch andere Bedeutung. Beispiele für konsistente Attribute sind id und class. Ein Beispiel für einen relaxierten XPath wird in Form von /html/body/div#dvClipList/div.ListItem/a.PopScore ausgedrückt, wobei ein Schrägstrich (slash) als Begrenzer zwischen Elementen verwendet wird. Für jedes Element gibt es ein element tag name, dann ein dot und value of a class attribute, sofern vorhanden, und dann ein sharp sign und einen value of the ID attribute, sofern vorhanden.
  • Diese besondere Adressierungsstruktur für einen Teilbaum ist nicht eindeutig. Folglich können in einem einzigen DOM-Baum mit identischen relaxierten XPaths mehrere Teilbäume vorhanden sein, so dass das Abfragen eines einzelnen relaxierten XPath in einem DOM zu mehreren Ergebnissen führen kann.
  • Darstellungen von Artikeln in einer Produktliste beispielsweise haben gewöhnlich denselben relaxierten XPath, wohingegen ein ausgewählter Artikel in der Liste gewöhnlich einen anderen relaxierten XPath ergibt, da dem ausgewählten Artikel von der Anwendung normalerweise ein anderes Klassenattribut zugewiesen wird.
  • Die Zustandskennung 710 stellt eine Funktion bereit, mit der unabhängigen Teilbäumen eines DOM, die von der Teilbaumkennung 708 gekennzeichnet werden, Zustände zugewiesen werden. Verschiedene Teilbäume des DOM haben deshalb jeweilige zugewiesene Zustände.
  • Die Listendatenstruktur 714 stellt eine Funktion bereit, um mittels des Prozesses des Zustandskennzeichnungssystems in einer Datenstruktur eine Liste aller Pfade in einer Reihe von Teilbäumen zu speichern und zu verwalten. Der erweiterte Webcrawler 718 verwaltet eine Liste mit relaxierten XPaths, die die Listendatenstruktur 714, welche auf Teilbäume zeigt, aufweist, in einem bestimmten DOM, das unabhängige Zustände sowie Informationen darüber enthält, welche Zustände unter einem jeden Teilbaum erscheinen können. Die Listendatenstruktur 714, die in dem Beispiel auch als list_of_all_paths (Liste_aller_Pfade) bezeichnet wird, kann in einer gegebenen Art einer Ausführungsform des Zustandskennzeichnungssystems 700 der Offenbarung in Tabellenform oder nach Bedarf auch anders strukturiert dargestellt werden.
  • Der Teilbaum-Hash 716 stellt eine Funktion bereit, um einen Hash-Wert für jeden Teilbaum-Kennzeichnungsstring zu erzeugen, der aus der Verwendung der Teilbaumkennung 708 abgeleitet wird. Der Hashwert stellt eine komprimierte eindeutige Darstellung der Eingabedaten dar, die sich für eine spätere Vergleichsoperation eignet.
  • Der erweiterte Webcrawler 718 stellt eine Funktion bereit, um unabhängige Teilbäume in einem bestimmten DOM zu kennzeichnen und folglich das Verhalten der Anwendung besser zu erkennen sowie das Verhalten genauer vorhersagen zu können. Das Zuweisen von Zuständen zu unabhängigen Teilbäumen eines DOM setzt voraus, dass der erweiterte Webcrawler 718 über ein Verfahren zum Erkennen von Teilbäumen, die unabhängig voneinander agieren, sowie über ein Verfahren verfügt, um die Grenzen eines jeden Teilbaums in einer Art und Weise zu beschreiben, die über das gesamte dynamische Verhalten der Webanwendung hinweg konsistent ist. Der Prozess der Telbaumkennung 708 und der Prozess der Zustandskennung 710 stellen die benötigte Funktion, unabhängige Teilbäume und zugehörige Zustände zu erkennen, bereit.
  • Bezug nehmend auf 8 ist ein Screenshot von Teilen einer Benutzeroberfläche gezeigt, bei dem der Zustand 3 von 3 gemäß einer Ausführungsform der Offenbarung als ein Vielfaches von Zuständen dargestellt ist.
  • Die Seite 800 stellt den Anfangszustand der Benutzeroberfläche 100 von 1 dar. Der Gesamtzustand eines DOM, das die Seite 800 darstellt, wird folglich als eine Reihe von Zuständen veranschaulicht. Der Zustand A 802 stellt die Erweiterung des Fensterobjekts 1 102 von 100 dar. Dementsprechend stellt der Zustand B 804 die Erweiterung des Fensterobjekts 2 104 dar, während der Zustand C 806 den Rest der Seite 800 darstellt, nachdem das Fensterobjekt 1 102 und das Fensterobjekt 2 104 von 100 entfernt worden sind. Der Zustand C 806 stellt einen Container einer Seite dar. In diesem Zustand ist das Vorhandensein von anderen Seitenelementen wie zum Beispiel Fensterobjekten unbekannt. Was jedoch bekannt ist, ist, dass das Fensterobjekt 1 102 und das Fensterobjekt 2 104 von 100 von der bestimmten Seite entfernt worden sind, und was übrig bleibt, ist der Container.
  • Jeder Zustand stellt folglich einen jeweiligen unabhängigen Teilbaum des DOM von der Seite 800 dar. Jeder Zustand verfügt folglich über einen zugehörigen XPath-Ausdruck, der einen Pfad angibt. Wie zuvor erwähnt wurde, sind die repräsentativen Pfade für jeden gekennzeichneten Zustand möglicherweise nicht eindeutig. Anstatt dem kompletten DOM als Ganzes mittels der offengelegten Funktionen eine Zustandskennung zuzuweisen, haben die verschiedenen Teilbäume des DOM jeweilige zugehörige Zustände, weshalb eine entsprechende Webanwendung treffender als eine Webanwendung beschrieben ist, die sich zu einem bestimmten Zeitpunkt in einer Reihe von Zuständen statt in nur einem einzigen Zustand befindet. Wendet man diesen Grundsatz an, ist der Zustand 3 von 3 nun eine Kombination von Zuständen, wie in 8 gezeigt ist. 8 stellt das DOM der Seite genauer als ein DOM dar, das eigentlich wie folgt aus drei Zuständen besteht, dem Zustand A 802, dem Zustand B 804 und dem Zustand C 806.
  • Das Leistungsmerkmal mehrerer Zustände, denen jeweilige unabhängige Teilbäume zugeordnet sind, kann dem Crawler zu einem besseren Verständnis des Verhaltens der Anwendung verhelfen und ihn folglich bei der genaueren Vorhersage des Verhaltens unterstützen. Damit er unabhängigen Teilbäumen eines DOM Zustände zuweisen kann, verfügt der Crawler über ein Verfahren zum Erkennen von Teilbäumen, die unabhängig voneinander agieren, sowie über ein Verfahren, um die Grenzen eines jeden Teilbaums in einer Art und Weise zu beschreiben, die über das gesamte dynamische Verhalten der Webanwendung hinweg konsistent ist. Das Verfahren wird in Form von Verfahren oder Prozeduren, die dazu dienen, eine Liste aller Pfade zu ermitteln, und für eine Reihe von aktuellen Zuständen bereitgestellt, wie später in 10 beschrieben wird.
  • Mit Bezug auf 9 ist eine tabellarische Darstellung einer Datenstruktur gezeigt, die eine Liste aller Pfade enthält, welche gemäß einer Ausführungsform der Offenbarung einen Prozess des Zustandskennzeichnungssystems von 7 verwenden.
  • Die Tabelle 900 ist ein Beispiel für eine Datenstruktur, die eine Liste aller Pfade für ein entsprechendes DOM einer bestimmten Webseite enthält. In dem Beispiel der Tabelle 900 gibt es drei Spalten, die den relaxierten Pfad 902, die Zustandskennung 904 und den Teilbaum-Hash 906 aufweisen. Wie zuvor erwähnt wurde, ist die Tabelle 900 ein Beispiel für eine Ausführungsform zur Aufnahme der Informationen, die zu entsprechenden aus Pfad, Zustandskennung und Teilbaum bestehenden Dreiergruppen gehören, welche mit der Zustandsanalyse einer bestimmten DOM-Darstellung einer Webseite verbunden sind. Wie in dem Beispiel gezeigt ist, kann ein Eintrag eines Pfads, der in dem relaxierten XPath 902 gekennzeichnet ist, auf verschiedene Zustände zeigen. In der ersten Zeile des Beispiels hat der mit /html/body gekennzeichnete Pfad zwei Zustandseinträge, 1 und 8, sowie einen entsprechenden Inhalt-Hash von @$J$#F@)J#403rn0f29r3m19 und *&^$^@J$$P@@$#$#_!$_*!$_*.
  • Der relaxierte Pfad 902 gibt eine Pfaddefinition für einen entsprechenden Teil des Teilbaums des DOM an, das unabhängige Zustände enthält. In einem einzelnen DOM-Baum mit identischen relaxierten XPaths können mehrere Teilbäume vorhanden sein. Die Liste mit den relaxierten XPaths 902 zeigt auf Teilbäume in einem DOM, das unabhängige Zustände sowie Informationen darüber enthält, welche Zustände unter einem jeden der entsprechenden Teilbäume erscheinen.
  • Die Zustandskennung 904 enthält die Zustandskennungen der Teilbäume des DOM, die von dem relaxierten XPath gekennzeichnet werden. Die Zustandskennung 904 gibt einen Wert einer zugewiesenen Zustandskennung für einen eindeutigen Teilbaum an. Wie zuvor erwähnt wurde, kann ein relaxierter XPath mehrere zugehörige Teilbäume und folglich auch mehrere entsprechende Zustandskennungen haben. Die Zustandswerte sind eindeutig und unterscheiden sich voneinander. Die Werte können von einem vorher angegebenen Wertebereich abgeleitet oder einfach als eine offene, monoton ansteigende Reihe von Werten belassen werden.
  • Der Teilbaum-Hash 906 enthält einen Hash-Wert, der mit Hilfe einer Hash-Funktion von verfügbaren Hash-Funktionen erzeugt wurde, um eine Pfaddefinition eines entsprechenden Teilbaums für einen bestimmten Zustand zu verschlüsseln. Ein Hash für den Pfad /html/body mit einer zugehörigen Zustandskennung von 1 oder 8 ergibt beispielsweise einen Hash-Wert von @$J$#F@)J#403rn0f29r3m19 beziehungsweise *&^$^@J$$P@@$#$#_!$_*!$_*.
  • Mit Bezug auf 10 ist ein Codefragment von Pseudocode gezeigt, um mit Hilfe des Zustandskennzeichnungssystems von 7 gemäß einer Ausführungsform der Offenbarung einen Zustand einer Anwendung zu ermitteln. Das Codefragment 1000 gibt Beispiele für Pseudocode zur Ermittlung des Zustands einer Anwendung und zum Erkennen von unabhängigen Teilbäumen an, wie sie in einer Ausführungsform des Zustandskennzeichnungssystems von 7 verwendet werden.
  • Der Teil 1002 des Codefragments 1000 stellt ein Beispiel für eine Prozedur zur Ermittlung von einer Reihe von aktuellen Zuständen in einer Darstellung von Pseudocode dar. Die Prozedur des Teils 1002 hängt von dem zugehörigen Teil 1004 ab, in dem eine Liste von Pfaden festgestellt wird, die unabhängige Teilbäume eines DOM darstellen, das analysiert wird.
  • Die Prozedur, die in dem Beispiel die Bezeichnung determine_set_of_current_states (Ermittle_die_Reihe_der_aktuellen_Zustände) trägt, durchläuft jeden (zuvor gekennzeichneten) in der Anweisung 1006 angegebenen Pfad in einer mit list_of_all_paths bezeichneten Datenstruktur, welche ein Beispiel für die Listendatenstruktur 714 von 7 ist. Der Teilbaum X stellt gemäß seiner Definition in der Prozedur einen entnommenen Teilbaum für einen aktuellen Pfad dar. Alle bekannten Teilpfade unter dem aktuellen Pfad werden durchlaufen und entsprechende Teilbäume des Teilbaums X werden aus dem Gesamtcontainer gelöscht, der beispielsweise von einer Anweisung /html/body path dargestellt wird. Es gibt keine Variante von /html/body path. Ein Zustand X wird durch read_contents_and_determine_state of the Subtree X (Lies_den_Inhalt_und_ermittle_den_Zustand des Teilbaums X) gekennzeichnet.
  • Die Prozedur fügt jeden gekennzeichneten Zustand X zum set_of_current_states (Reihe_der_aktuellen_Zustände) hinzu. Wenn es in der list_of_all_paths keine weiteren zu verarbeitenden Pfade gibt, wird als Ergebnis der Ausführung der Prozedur ein set_of_current_states zurückgesendet.
  • Damit die Prozedur des Teils 1002 durchgeführt werden kann, verwendet ein Webcrawler ein Verfahren zum Erkennen von unabhängigen Teilbäumen, so dass der Webcrawler die mit list_of_all_paths bezeichnete Datenstruktur füllen kann. Verschiedene Verfahren können angewandt werden, darunter auch das Durchführen einer statischen Analyse des Inhalts des DOM und das Erkennen von unabhängigen Teilbäumen auf der Grundlage der Ähnlichkeit von jeweiligen Codes. Ein Beispiel für diese derzeit verwendete Technik wird als Fensterobjekt-Erkennung bezeichnet. Wenn die Technik der Fensterobjekt-Erkennung derzeit jedoch verwendet wird, kann sich die Technik nicht darauf verlassen, dass sich jederzeit Fensterobjekte auf der Seite befinden.
  • Bei Verwendung einer Ausführungsform der Offenbarung wird jedoch eine neue dynamische Vorgehensweise zum Kennzeichnen von unabhängigen Teilen des DOM angewandt, bei der beobachtete Änderungen in dem DOM während der Ausführung von Ereignissen zur Anwendung kommen. Die in der Offenbarung beschriebene dynamische Vorgehensweise funktioniert auch bei Webseiten, die keine Fensterobjekte haben.
  • Der Teil 1004 des Codefragments 1000 ist ein Beispiel für eine Prozedur zum Erkennen von unabhängigen Teilbäumen. Bei dieser Prozedur ist die mit list_of_all_paths bezeichnete Datenstruktur leer, wenn die Prozedur gestartet wird, wie in der Anweisung 1008 angegeben ist. Wenn der Webcrawler ein Ereignis ausführt, führt er auch eine Prüfung durch, um eine mögliche Änderung in dem DOM festzustellen. Während der Webcrawler Durchsuchungen vornimmt, wird eine Reihe von Operationen durchgeführt, bis der Vorgang des Durchsuchens abgeschlossen ist, wie in der Anweisung 1010 angegeben ist.
  • Während der Durchführung einer Durchsuchungsoperation legt die Prozedur auf der Grundlage einer Durchsuchungsstrategie ein Ereignis X als das nächste auszuführende Ereignis fest. Das Ereignis X wird ausgeführt und die Auswirkung auf das DOM infolge der Ausführung des Ereignisses wird beobachtet. Ein Delta X wird als ein Unterschied zwischen einer Instanz html_vor der Ausführung und einer Instanz html_nach der Ausführung infolge der Ausführung des Ereignisses X definiert.
  • Die Prozedur gibt den Pfad X als den relaxierten XPath von Delta X an. Wenn sich der Pfad X nicht in der list_of_all_paths befindet (zuvor nicht angegeben oder erkannt und hinzugefügt wurde), fügt die Prozedur einen Eintrag für den Pfad X zu der list_of_all_paths hinzu.
  • Die Prozedur weist für Delta X ein set_of_current_states als die Zustände zu, die von determine_set_of_current_states zurückgesendet wurden. Das set_of_current_states wird dem Ereignis X als mögliche Zielzustände, zu denen das Ereignis X führt, zugewiesen.
  • Mit Bezug auf 11 ist ein Ablaufplan eines Prozesses gezeigt, um mit Hilfe des Zustandskennzeichnungssystems von 7 gemäß einer Ausführungsform der Offenbarung einen Zustand einer Anwendung zu ermitteln. Der Prozess 1100 ist ein Beispiel für eine Ausführungsform der Zustandskennung 710 von 7 und für eine Verwendung des Pseudocode-Beispiels des Teils 1004 des Codefragments 1000 von 10.
  • Der Prozess 1100 beginnt (Schritt 1102) und empfängt eine Reihe von Pfaden, die für ein DOM stehen (Schritt 1104). Das DOM ist in diesem Fall eine hierarchische Darstellung einer interessierenden Webseite. Für jeden Pfad in der Reihe der empfangenen Pfade ist der Teilbaum X gemäß dem Prozess 1100 ein entnommener Teilbaum für einen aktuellen Pfad (Schritt 1106). Der Prozess 1100 durchläuft alle bekannten Teilpfade unter dem aktuellen Pfad und löscht entsprechende Teilbäume aus dem Teilbaum X (Schritt 1108). Die entsprechenden Teilbäume werden gelöscht, um nicht benötigte Einträge zu beseitigen, so dass eine unnötige Verarbeitung der Einträge vermieden wird. Teilbäume können ineinander enthalten sein, und da Zustände von Teilbäumen als unabhängig betrachtet werden, sollte sich ein Zustand eines inneren Teilbaums nicht auf den Zustand des äußeren Teilbaums auswirken oder umgekehrt Wenn man sich den Inhalt eines Teilbaums anschaut, um einen zugehörigen Zustand zu ermitteln, sollte daher jedweder Inhalt, der zu einem inneren Teilbaum gehört, ignoriert werden.
  • Gemäß dem Prozess 1100 ist der Zustand X das Ergebnis einer Leseoperation des Inhalts des Teilbaums X und einer Ermittlung von Zuständen, die zum Teilbaum X gehören (Schritt 1110). Für den Teilbaum X wird der Inhalt folglich geprüft und ein entsprechender Zustand wird ermittelt. Der Prozess 1100 fügt den Zustand X zu einer Reihe von aktuellen Zuständen hinzu (Schritt 1112). Der neue Eintrag für den Zustand X wird zu einer Datenstruktur hinzugefügt, die die Zustände enthält, welche sich aus der Verarbeitung der Reihe von Pfaden ergeben. In der Tabelle 900 von 9 ist die erste Spalte in der Tabelle der relaxierte XPath (wie zum Beispiel der aktuelle Pfad des Teilbaums X, der gerade verarbeitet wird), die zweite Spalte enthält die Zustandskennungen der Teilbäume des DOM, die von dem relaxierten XPath gekennzeichnet werden (der Zustand des soeben verarbeiteten Teilbaums X), und die letzte Spalte enthält den Hash des Teilbaums X.
  • Der Prozess 1100 stellt fest, ob es weitere Pfade gibt (Schritt 1114). Als Reaktion auf eine Feststellung, dass es weitere Pfade gibt, kehrt der Prozess 1100 wie zuvor zum Schritt 1106 zurück, um einen nächsten Pfad zu verarbeiten. Als Reaktion auf eine Feststellung, dass es keine weiteren Pfade gibt, sendet der Prozess 1100 die Reihe der aktuellen Zustände zurück (Schritt 1106) und endet daraufhin (Schritt 1118).
  • Mit Bezug auf 12 ist ein Ablaufplan eines Prozesses gezeigt, um mit Hilfe des Zustandskennzeichnungssystems von 7 gemäß einer Ausführungsform der Offenbarung unabhängige Teilbäume zu erkennen. Der Prozess 1200 ist ein Beispiel für eine Ausführungsform der Teilbaumkennung 708, die verwendet wird, um die Listendatenstruktur 714 von 7 zu füllen.
  • Der Prozess 1200 beginnt (Schritt 1202) und initialisiert eine Liste aller Pfade als leer (Schritt 1204). Eine Datenstruktur wie zum Beispiel die Tabelle 900 von 9 wird verwendet, um die Ergebnisse der Verarbeitung aufzunehmen, wobei die Prozeduren des Prozesses 1100 von 11 und des Prozesses 1200 zur Anwendung kommen. Wenn ein Webcrawler einen aktuellen Gesamtzustand der Anwendung in Erfahrung bringen muss, muss er sich den Inhalt eines jeden Teilbaums des DOM, das gerade geprüft wird, anschauen und einen bestimmten Teilbaum mit den bekannten Teilbäumen vergleichen, um den Zustand dieses bestimmten Teilbaums zu ermitteln. Der Zustand der ganzen Anwendung wird von der Reihe der aktuellen Zustände der repräsentativen Teilbäume dargestellt.
  • Solange keine Durchsuchungen stattfinden, kennzeichnet der Prozess 1200 ein Ereignis X als ein nächstes für die Ausführung zu terminierendes Ereignis, wobei er eine ausgewählte, vorher festgelegte Durchsuchungsstrategie anwendet (Schritt 1206). Die gewählte Durchsuchungsstrategie ist unabhängig von der Operation des beschriebenen Prozesses und wird nur verwendet, um ein nächstes Ereignis oder eine Abfolge von Ereignissen zu kennzeichnen, die zu einem empfangenen DOM gehören, das für die interessierende Webseite steht.
  • Der Prozess 1200 erfasst eine Darstellung einer Instanz html_vor der Ausführung des Ereignisses X (Schritt 1208). Die Darstellung ist eine Momentaufnahme eines DOM-Baums vor der Ausführung des als Ereignis X gekennzeichneten Ereignisses.
  • Der Prozess 1200 führt das gekennzeichnete Ereignis X aus (Schritt 1210). Der Prozess 1200 erfasst eine Darstellung einer Instanz html_nach der Ausführung des Ereignisses X (Schritt 1212). Bei der Darstellung handelt es sich um eine Momentaufnahme eines DOM-Baums nach der Ausführung des als Ereignis X gekennzeichneten Ereignisses. Um unabhängige Teilbäume zu erkennen, führt der Prozess 1200 jedes Ereignis auf der Seite aus und erhält einen Unterschied diff zwischen den Momentaufnahmen des DOM-Baums vor und nach der Ausführung des Ereignisses. Der Teilbaum des DOM, das sich infolge der Ausführung des Ereignisses geändert hat, wird als ein Teil betrachtet, der unabhängig Zustände enthalten kann.
  • Gemäß dem Prozess 1200 ist Delta X ein Unterschied zwischen der Instanz html_vor der Ausführung des Ereignisses X und der Instanz html_nach der Ausführung des Ereignisses X (Schritt 1214). Gemäß dem Prozess 1200 ist der Pfad X ein relaxierter XPath von Delta X (Schritt 1216).
  • Der Prozess 1200 stellt fest, ob der Pfad X in der Liste aller Pfade vorhanden ist (Schritt 1218). Als Reaktion auf eine Feststellung, dass der Pfad X nicht in der Liste aller Pfade vorhanden ist, fügt der Prozess 1200 den Pfad X zu der Liste aller Pfade hinzu (Schritt 1220). Der Prozess 1200 gibt darüber hinaus eine Reihe von aktuellen Zuständen als die Reihe der aktuellen Zustände für Delta X an (Schritt 1222).
  • Der Prozess 1200 weist dem Ereignis X die aktuelle Reihe von Zuständen zu (Schritt 1224). Der Prozess 1200 stellt fest, ob es in der Durchsuchungsstrategie weitere auszuführende Ereignisse gibt (Schritt 1226). Als Reaktion auf eine Feststellung, dass es in der Durchsuchungsstrategie weitere auszuführende Ereignisse gibt, kehrt der Prozess 1200 wie vorher zum Schritt 1206 zurück. Als Reaktion auf eine Feststellung, dass es in der Durchsuchungsstrategie keine weiteren auszuführenden Ereignisse gibt, endet der Prozess 1200 daraufhin (Schritt 1228).
  • Somit wird in einer der Veranschaulichung dienenden Ausführungsform ein von einem Computer ausgeführtes Verfahren zum Kennzeichnen von Client-Zuständen aufgezeigt. Das auf einem Datenverarbeitungssystem von einem Computer ausgeführte Verfahren weist das durch einen Prozessor des Datenverarbeitungssystems erfolgende Empfangen einer Reihe von Pfaden, die für ein Document Object Model (DOM) stehen, das zu einer Webseite einer erweiterten Internet-Anwendung gehört, und für jeden Pfad in der Reihe der von dem Prozessor empfangenen Pfade das Entnehmen eines Teilbaums, als Teilbaum X, für einen aktuellen Pfad auf. Das von einem Computer ausgeführte Verfahren durchläuft des Weiteren alle bekannten Teilpfade unter dem aktuellen Pfad und löscht entsprechende Teilbäume aus dem Teilbaum X, liest den Inhalt des Teilbaums X und ermittelt Zustände des Teilbaums X, um einen Zustand X zu bilden und fügt den Zustand X zu einer Reihe von aktuellen Zuständen hinzu. Das von einem Computer ausgeführte Verfahren sendet ferner als Reaktion auf eine Feststellung, dass es keine weiteren Pfade gibt, die Reihe der aktuellen Zustände der erweiterten Internet-Anwendung zurück.
  • Der Ablaufplan und die Blockschaubilder in den Figuren veranschaulichen die Architektur, die Funktionalität und die Betriebsweise von möglichen Ausführungsarten von Systemen, Verfahren und Computerprogrammprodukten gemäß verschiedenen Ausführungsformen der vorliegenden Erfindung. In dieser Hinsicht kann jeder Block in dem Ablaufplan oder in den Blockschaubildern ein Modul, ein Segment oder einen Teil von Code darstellen, das beziehungsweise der eine oder mehrere ausführbare Anweisungen zur Ausführung einer angegebenen logischen Funktion aufweist. Es sei auch angemerkt, dass die in dem Block angegebenen Funktionen in manchen alternativen Ausführungsarten mitunter in einer anderen als in der in den Figuren angegebenen Reihenfolge auftreten können. In Abhängigkeit von der mit ihnen verbundenen Funktionalität können beispielsweise zwei Blöcke, die als aufeinanderfolgende Blöcke dargestellt sind, tatsächlich weitgehend gleichzeitig ausgeführt werden oder die Blöcke können zuweilen in der umgekehrten Reihenfolge ausgeführt werden. Es wäre noch anzumerken, dass jeder Block der Blockschaubilder und/oder der Darstellung in dem Ablaufplan sowie Kombinationen aus Blöcken in den Blockschaubildern und/oder der Darstellung in dem Ablaufplan von Systemen, die auf Spezial-Hardware beruhen und die angegebenen Funktionen oder Vorgänge durchführen, oder von Kombinationen aus Spezial-Hardware und Computer-Anweisungen ausgeführt werden können.
  • Die entsprechenden Strukturen, Materialien, Vorgänge und Äquivalente von allen Mitteln beziehungsweise Schritt-plus-Funktion-Elementen (step plus function elements) in den nachstehenden Ansprüchen sollen jedwede Struktur, jedwedes Material oder jedweden Vorgang zur Ausführung der Funktion in Verbindung mit anderen beanspruchten Elementen, die im Einzelnen beansprucht werden, mit einschließen. Die Beschreibung der vorliegenden Erfindung erfolgte zum Zweck der Veranschaulichung und Erläuterung, erhebt jedoch keinen Anspruch auf Vollständigkeit und ist auch nicht als auf die Erfindung in der offenbarten Form beschränkt zu verstehen. Viele Ab- und Veränderungen sind für den Fachmann erkennbar, ohne vom Umfang und Wesen der Erfindung abzuweichen. Die Ausführungsform wurde gewählt und beschrieben, um die Grundgedanken der Erfindung und die praktische Anwendung bestmöglich zu erklären und um anderen Fachleuten das Verständnis der Erfindung hinsichtlich verschiedener Ausführungsformen mit verschiedenen Änderungen, wie sie für die entsprechende vorgesehene Verwendung geeignet sind, zu ermöglichen.
  • Die Erfindung kann die Form einer ganz in Hardware realisierten Ausführung, einer ganz in Software realisierten Ausführung oder einer Ausführung annehmen, die sowohl Hardware- als auch Software-Elemente enthält. In einer bevorzugten Ausführungsform wird die Erfindung in Software ausgeführt, die, ohne darauf beschränkt zu sein, Firmware, residente Software, Mikrocode und andere Software-Medien einschließen kann, die für den Fachmann erkennbar sind.
  • Es sei ausdrücklich angemerkt, dass die vorliegende Erfindung zwar im Zusammenhang mit einem vollständig funktionsfähigen Datenverarbeitungssystem beschrieben wurde, der Fachmann jedoch als vorteilhaft erkennen wird, dass die Prozesse der vorliegenden Erfindung in Form von einer von einem Computer lesbaren Datenspeichereinheit vertrieben werden können, auf der von einem Computer ausführbare Anweisungen in vielen verschiedenen Formen gespeichert sind. Zu Beispielen für von einem Computer lesbare Datenspeichereinheiten gehören unter anderem beschreibbare Datenträger wie zum Beispiel eine Diskette, ein Festplattenlaufwerk, ein RAM, CD-ROMs, DVD-ROMs. Die von einem Computer ausführbaren Anweisungen können die Form von codierten Formaten annehmen, die zur tatsächlichen Verwendung in einem bestimmten Datenverarbeitungssystem decodiert werden.
  • Ein Datenverarbeitungssystem, das zur Speicherung und/oder Ausführung von Anweisungen, die von einem Computer ausgeführt werden können und Programmcode aufweisen, geeignet ist, enthält einen oder mehrere Prozessoren, die über einen Systembus direkt oder indirekt mit Speicherelementen verbunden sind. Zu den Speicherelementen können ein lokaler Speicher, der während der tatsächlichen Ausführung des Programmcodes verwendet wird, ein Massenspeicher sowie Cachespeicher gehören, die eine vorübergehende Speicherung von mindestens einem Teil des Programmcodes ermöglichen, um die Häufigkeit zu verringern, mit der Code während der Ausführung aus dem Massenspeicher abgerufen werden muss.
  • Eingabe-/Ausgabe- oder E/A-Einheiten (einschließlich Tastaturen, Bildschirme, Zeigegeräte usw., jedoch nicht auf diese beschränkt) können entweder direkt oder über dazwischenliegende E/A-Steuereinheiten mit dem System verbunden werden.
  • Netzwerkadapter können ebenfalls mit dem System verbunden werden, damit das Datenverarbeitungssystem mit anderen Datenverarbeitungssystemen oder fernen Druckern oder Speichereinheiten über dazwischenliegende private oder öffentliche Netzwerke verbunden werden kann. Modems, Kabelmodems und Ethernet-Karten sind nur einige der aktuell verfügbaren Arten von Netzwerkadaptern.

Claims (20)

  1. Von einem Computer ausgeführtes Verfahren zum Kennzeichnen von Client-Zuständen, wobei das auf einem Datenverarbeitungssystem von einem Computer ausgeführte Verfahren aufweist: Empfangen einer Reihe von Pfaden durch einen Prozessor des Datenverarbeitungssystems, welche für ein Document Object Model (DOM) stehen, das zu einer Webseite einer erweiterten Internet-Anwendung gehört; für jeden Pfad in der Reihe der von dem Prozessor empfangenen Pfade Entnehmen eines Teilbaums, als Teilbaum X, für einen aktuellen Pfad; Durchlaufen aller bekannten Teilpfade unter dem aktuellen Pfad und Löschen entsprechender Teilbäume aus dem Teilbaum X; Lesen des Inhalts des Teilbaums X und Ermitteln von Zuständen des Teilbaums X, um einen Zustand X zu bilden; Hinzufügen des Zustands X zu einer Reihe von aktuellen Zuständen; und als Reaktion auf eine Feststellung, dass es keine weiteren Pfade gibt, Zurücksenden der Reihe der aktuellen Zustände der erweiterten Internet-Anwendung.
  2. Von einem Computer ausgeführtes Verfahren nach Anspruch 1, wobei das Empfangen einer Reihe von Pfaden durch einen Prozessor des Datenverarbeitungssystems, welche für ein Document Object Model (DOM) stehen, das zu einer Webseite einer erweiterten Internet-Anwendung gehört, des Weiteren aufweist: Initialisieren einer Liste aller Pfade als leer; unter Verwendung einer ausgewählten, vorher festgelegten Durchsuchungsstrategie Kennzeichnen des Ereignisses X als ein nächstes auszuführendes Ereignis; Erfassen einer Darstellung einer Instanz html_vor der Ausführung des Ereignisses X; Ausführen des Ereignisses X; Erfassen einer Darstellung einer Instanz html_nach der Ausführung des Ereignisses X; Kennzeichnen eines Delta X als einen Unterschied zwischen der Instanz html_vor der Ausführung des Ereignisses X und der Instanz html_nach der Ausführung des Ereignisses X; Angeben des Pfads X als einen relaxierten XPath von Delta X; und als Reaktion auf eine Feststellung, dass der Pfad X nicht in der Liste aller Pfade vorhanden ist, Hinzufügen des Pfads X zu der Liste aller Pfade.
  3. Von einem Computer ausgeführtes Verfahren nach Anspruch 2, das des Weiteren aufweist: Angeben einer Reihe von aktuellen Zuständen als die Reihe der aktuellen Zustände, die für Delta X ermittelt wurden; Zuweisen der aktuellen Reihe von Zuständen zum Ereignis X als mögliche Zielzustände des Ereignisses X; Feststellen, ob es in der Durchsuchungsstrategie weitere auszuführende Ereignisse gibt; und als Reaktion auf eine Feststellung, dass es in der Durchsuchungsstrategie weitere auszuführende Ereignisse gibt, Zurückkehren, um das Ereignis X unter Verwendung einer ausgewählten, vorher festgelegten Durchsuchungsstrategie als ein nächstes auszuführendes Ereignis zu kennzeichnen.
  4. Von einem Computer ausgeführtes Verfahren nach Anspruch 1, wobei die Reihe von Pfaden, die für ein Document Object Model (DOM) stehen, das zu einer Webseite einer erweiterten Internet-Anwendung gehört, eine Datenstruktur ist, die eine Liste aller Pfade aufweist.
  5. Von einem Computer ausgeführtes Verfahren nach Anspruch 4, wobei die Datenstruktur, die eine Liste aller Pfade aufweist, des Weiteren aufweist: eine Reihe von Einträgen, wobei jeder Eintrag in der Reihe von Einträgen ein Tupel aufweist, das für mindestens einen Pfadteil, einen Zustandskennungsteil und einen Inhalt-Hash-Teil steht, wobei der Pfadteil eine Definition eines relaxierten XPath aufweist, der Zustandskennungsteil einen Wert einer zugewiesenen Zustandskennung für einen eindeutigen Teilbaum angibt und der Inhalt-Hash-Teil einen Hash-Wert eines Teilbaums darstellt.
  6. Von einem Computer ausgeführtes Verfahren nach Anspruch 5, wobei der Pfadteil, der die Definition des relaxierten XPath darstellt, eine Pfaddefinition für einen entsprechenden Teilbaum-Teil des DOM angibt, das unabhängige Zustände enthält, und wobei in einem einzigen DOM-Baum mit identischen relaxierten XPaths mehrere Teilbäume vorhanden sein können.
  7. Von einem Computer ausgeführtes Verfahren nach Anspruch 5, wobei die Zustandswerte eindeutig sind und sich voneinander unterscheiden.
  8. Computerprogrammprodukt zum Kennzeichnen von Client-Zuständen, wobei das Computerprogrammprodukt aufweist: eine von einem Computer beschreibbare Speichereinheit, die darauf gespeicherten, von einem Computer ausführbaren Programmcode enthält, wobei der von einem Computer ausführbare Programmcode aufweist: von einem Computer ausführbaren Programmcode, um eine Reihe von Pfaden zu empfangen, die für ein Document Object Model (DOM) stehen, das zu einer Webseite einer erweiterten Internet-Anwendung gehört; von einem Computer ausführbaren Programmcode für jeden Pfad in der Reihe der von dem Prozessor empfangenen Pfade, um einen Teilbaum, als Teilbaum X, für einen aktuellen Pfad zu entnehmen; von einem Computer ausführbaren Programmcode, um alle bekannten Teilpfade unter dem aktuellen Pfad zu durchlaufen und entsprechende Teilbäume aus dem Teilbaum X zu löschen; von einem Computer ausführbaren Programmcode, um den Inhalt des Teilbaums X zu lesen und Zustände des Teilbaums X zu ermitteln, um einen Zustand X zu bilden; von einem Computer ausführbaren Programmcode, um den Zustand X zu einer Reihe von aktuellen Zuständen hinzuzufügen; und von einem Computer ausführbaren Programmcode, der auf eine Feststellung anspricht, dass es keine weiteren Pfade gibt, um die Reihe der aktuellen Zustände der erweiterten Internet-Anwendung zurückzusenden.
  9. Computerprogrammprodukt nach Anspruch 8, wobei der von einem Computer ausführbare Programmcode zum Empfangen einer Reihe von Pfaden, die für ein Document Object Model (DOM) stehen, das zu einer Webseite einer erweiterten Internet-Anwendung gehört, des Weiteren aufweist: von einem Computer ausführbaren Programmcode, um eine Liste aller Pfade als leer zu initialisieren; von einem Computer ausführbaren Programmcode, um unter Verwendung einer ausgewählten, vorher festgelegten Durchsuchungsstrategie das Ereignis X als ein nächstes auszuführendes Ereignis zu kennzeichnen; von einem Computer ausführbaren Programmcode, um eine Darstellung einer Instanz html_vor der Ausführung des Ereignisses X zu erfassen; von einem Computer ausführbaren Programmcode, um das Ereignis X auszuführen; von einem Computer ausführbaren Programmcode, um eine Darstellung einer Instanz html_nach der Ausführung des Ereignisses X zu erfassen; von einem Computer ausführbaren Programmcode, um ein Delta X als einen Unterschied zwischen der Instanz html_vor der Ausführung des Ereignisses X und der Instanz html_nach der Ausführung des Ereignisses X zu kennzeichnen; von einem Computer ausführbaren Programmcode, um den Pfad X als einen relaxierten XPath von Delta X anzugeben; und von einem Computer ausführbaren Programmcode, der auf eine Feststellung anspricht, dass der Pfad X nicht in der Liste aller Pfade vorhanden ist, um den Pfad X zu der Liste aller Pfade hinzuzufügen.
  10. Computer-Programmprodukt nach Anspruch 9, das des Weiteren aufweist: von einem Computer ausführbaren Programmcode, um eine Reihe von aktuellen Zuständen als die Reihe der aktuellen Zustände anzugeben, die für Delta X ermittelt wurden; von einem Computer ausführbaren Programmcode, um dem Ereignis X die aktuelle Reihe von Zuständen als mögliche Zielzustände des Ereignisses X zuzuweisen; von einem Computer ausführbaren Programmcode, um festzustellen, ob es in der Durchsuchungsstrategie weitere auszuführende Ereignisse gibt; und von einem Computer ausführbaren Programmcode, der auf eine Feststellung anspricht, dass es in der Durchsuchungsstrategie weitere auszuführende Ereignisse gibt, um zurückzukehren, um das Ereignis X unter Verwendung einer ausgewählten, vorher festgelegten Durchsuchungsstrategie als ein nächstes auszuführendes Ereignis zu kennzeichnen.
  11. Computerprogrammprodukt nach Anspruch 8, wobei die Reihe von Pfaden, die für ein Document Object Model (DOM) stehen, das zu einer Webseite einer erweiterten Internet-Anwendung gehört, eine Datenstruktur ist, die eine Liste aller Pfade aufweist.
  12. Computerprogrammprodukt nach Anspruch 11, wobei die Datenstruktur, die eine Liste aller Pfade aufweist, des Weiteren aufweist: eine Reihe von Einträgen, wobei jeder Eintrag in der Reihe von Einträgen ein Tupel aufweist, das für mindestens einen Pfadteil, einen Zustandskennungsteil und einen Inhalt-Hash-Teil steht, wobei der Pfadteil eine Definition eines relaxierten XPath aufweist, der Zustandskennungsteil einen Wert einer zugewiesenen Zustandskennung für einen eindeutigen Teilbaum angibt und der Inhalt-Hash-Teil einen Hash-Wert eines Teilbaums darstellt.
  13. Computerprogrammprodukt nach Anspruch 12, wobei der Pfadteil, der die Definition des relaxierten XPath darstellt, eine Pfaddefinition für einen entsprechenden Teilbaum-Teil des DOM angibt, das unabhängige Zustände enthält, und wobei in einem einzigen DOM-Baum mit identischen relaxierten XPaths mehrere Teilbäume vorhanden sein können.
  14. Computerprogrammprodukt nach Anspruch 12, wobei die Zustandswerte eindeutig sind und sich voneinander unterscheiden.
  15. Vorrichtung zum Kennzeichnen von Client-Zuständen, wobei die Vorrichtung aufweist: eine Übertragungsstruktur; einen mit der Übertragungsstruktur verbundenen Hauptspeicher, wobei der Hauptspeicher von einem Computer ausführbaren Programmcode enthält; eine mit der Übertragungsstruktur verbundene Übertragungseinheit; eine mit der Übertragungsstruktur verbundene Eingabe-/Ausgabeeinheit; einen mit der Übertragungsstruktur verbundenen Bildschirm; und eine mit der Übertragungsstruktur verbundene Prozessoreinheit, wobei die Prozessoreinheit den von einem Computer ausführbaren Programmcode ausführt, um die Vorrichtung anzuweisen: eine Reihe von Pfaden zu empfangen, die für ein Document Object Model (DOM) stehen, das zu einer Webseite einer erweiterten Internet-Anwendung gehört; für jeden Pfad in der Reihe der empfangenen Pfade einen Teilbaum, als Teilbaum X, für einen aktuellen Pfad zu entnehmen; alle bekannten Teilpfade unter dem aktuellen Pfad zu durchlaufen und entsprechende Teilbäume aus dem Teilbaum X zu löschen; den Inhalt des Teilbaums X zu lesen und Zustände des Teilbaums X zu ermitteln, um einen Zustand X zu bilden; den Zustand X zu einer Reihe von aktuellen Zuständen hinzuzufügen; und als Reaktion auf eine Feststellung, dass es keine weiteren Pfade gibt, die Reihe der aktuellen Zustände der erweiterten Internet-Anwendung zurückzusenden.
  16. Vorrichtung nach Anspruch 15, wobei die Prozessoreinheit den von einem Computer ausführbaren Programmcode ausführt, um eine Reihe von Pfaden zu empfangen, die für ein Document Object Model (DOM) stehen, das zu einer Webseite einer erweiterten Internet-Anwendung gehört, die Vorrichtung des Weiteren anweist: eine Liste aller Pfade als leer zu initialisieren; unter Verwendung einer ausgewählten, vorher festgelegten Durchsuchungsstrategie das Ereignis X als ein nächstes auszuführendes Ereignis zu kennzeichnen; eine Darstellung einer Instanz html_vor der Ausführung des Ereignisses X zu erfassen; das Ereignis X auszuführen; eine Darstellung einer Instanz html_nach der Ausführung des Ereignisses X zu erfassen; ein Delta X als einen Unterschied zwischen der Instanz html_vor der Ausführung des Ereignisses X und der Instanz html_nach der Ausführung des Ereignisses X zu kennzeichnen; den Pfad X als einen relaxierten XPath von Delta X anzugeben; und als Reaktion auf eine Feststellung, dass der Pfad X nicht in der Liste aller Pfade vorhanden ist, den Pfad X zu der Liste aller Pfade hinzuzufügen.
  17. Vorrichtung nach Anspruch 16, wobei die Prozessoreinheit des Weiteren den von einem Computer ausführbaren Programmcode ausführt, um die Vorrichtung anzuweisen: eine Reihe von aktuellen Zuständen als die Reihe der aktuellen Zustände anzugeben, die für Delta X ermittelt wurden; dem Ereignis X die aktuelle Reihe von Zuständen als mögliche Zielzustände des Ereignisses X zuzuweisen; festzustellen, ob es in der Durchsuchungsstrategie weitere auszuführende Ereignisse gibt; und als Reaktion auf eine Feststellung, dass es in der Durchsuchungsstrategie weitere auszuführende Ereignisse gibt, zurückzukehren, um das Ereignis X unter Verwendung einer ausgewählten, vorher festgelegten Durchsuchungsstrategie als ein nächstes auszuführendes Ereignis zu kennzeichnen.
  18. Vorrichtung nach Anspruch 15, wobei die Reihe von Pfaden, die für ein Document Object Model (DOM) stehen, das zu einer Webseite einer erweiterten Internet-Anwendung gehört, eine Datenstruktur ist, die eine Liste aller Pfade aufweist.
  19. Vorrichtung nach Anspruch 18, wobei die Datenstruktur, die eine Liste aller Pfade aufweist, des Weiteren aufweist: eine Reihe von Einträgen, wobei jeder Eintrag in der Reihe von Einträgen ein Tupel aufweist, das für mindestens einen Pfadteil, einen Zustandskennungsteil und einen Inhalt-Hash-Teil steht, wobei der Pfadteil eine Definition eines relaxierten XPath aufweist, der Zustandskennungsteil einen Wert einer zugewiesenen Zustandskennung für einen eindeutigen Teilbaum angibt und der Inhalt-Hash-Teil einen Hash-Wert eines Teilbaums darstellt.
  20. Vorrichtung nach Anspruch 19, wobei der Pfadteil, der die Definition des relaxierten XPath darstellt, eine Pfaddefinition für einen entsprechenden Teilbaum-Teil des DOM angibt, das unabhängige Zustände enthält, und wobei in einem einzigen DOM-Baum mit identischen relaxierten XPaths mehrere Teilbäume vorhanden sein können.
DE112014001997.6T 2013-05-28 2014-04-15 Kennzeichnen von Client-Zuständen Pending DE112014001997T5 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
CA2816781 2013-05-28
CA2816781A CA2816781C (en) 2013-05-28 2013-05-28 Identifying client states
PCT/CA2014/050378 WO2014190427A1 (en) 2013-05-28 2014-04-15 Identifying client states

Publications (1)

Publication Number Publication Date
DE112014001997T5 true DE112014001997T5 (de) 2015-12-31

Family

ID=51987807

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112014001997.6T Pending DE112014001997T5 (de) 2013-05-28 2014-04-15 Kennzeichnen von Client-Zuständen

Country Status (4)

Country Link
US (2) US10078698B2 (de)
CA (1) CA2816781C (de)
DE (1) DE112014001997T5 (de)
WO (1) WO2014190427A1 (de)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11132409B2 (en) 2013-05-28 2021-09-28 International Business Machines Corporation Identifying client states

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107798051A (zh) * 2016-08-31 2018-03-13 安提特软件有限责任公司 文件对象模型事务爬行器
US11055365B2 (en) 2018-06-29 2021-07-06 Paypal, Inc. Mechanism for web crawling e-commerce resource pages
US11226727B2 (en) * 2018-11-12 2022-01-18 Citrix Systems, Inc. Systems and methods for live tiles for SaaS
US10795701B2 (en) 2018-11-20 2020-10-06 Express Scripts Strategic Development, Inc. System and method for guiding a user to a goal in a user interface
CN111339455B (zh) * 2018-12-18 2024-02-23 阿里巴巴集团控股有限公司 浏览器应用加载页面首屏的方法和装置
US11561962B2 (en) * 2020-07-22 2023-01-24 Content Square SAS System and method for detecting changes in webpages and generating metric correlations therefrom
CN114528811B (zh) * 2022-01-21 2022-09-02 北京麦克斯泰科技有限公司 文章内容抽取方法、装置、设备及存储介质

Family Cites Families (28)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1016988A3 (de) 1998-12-29 2001-03-14 Sun Microsystems, Inc. Erstellen von Aktualisierungsdateien für Kopien von hierarchisch strukturierten Daten
US7895583B2 (en) * 2000-12-22 2011-02-22 Oracle International Corporation Methods and apparatus for grammar-based recognition of user-interface objects in HTML applications
US7010757B2 (en) * 2001-01-12 2006-03-07 Acterna, L.L.C. Method and apparatus for launching computer applications
US7194683B2 (en) * 2001-03-02 2007-03-20 International Business Machines Corporation Representing and managing dynamic data content for web documents
US20030018668A1 (en) * 2001-07-20 2003-01-23 International Business Machines Corporation Enhanced transcoding of structured documents through use of annotation techniques
US20080313282A1 (en) * 2002-09-10 2008-12-18 Warila Bruce W User interface, operating system and architecture
US8229932B2 (en) * 2003-09-04 2012-07-24 Oracle International Corporation Storing XML documents efficiently in an RDBMS
US7877366B2 (en) * 2004-03-12 2011-01-25 Oracle International Corporation Streaming XML data retrieval using XPath
US7707152B1 (en) 2005-07-29 2010-04-27 Adobe Systems Incorporated Exposing rich internet application content to search engines
US20070226206A1 (en) * 2006-03-23 2007-09-27 Dmitri Pavlovski Consecutive crawling to identify transient links
US8868533B2 (en) 2006-06-30 2014-10-21 International Business Machines Corporation Method and apparatus for intelligent capture of document object model events
US7555480B2 (en) 2006-07-11 2009-06-30 Microsoft Corporation Comparatively crawling web page data records relative to a template
US8051372B1 (en) * 2007-04-12 2011-11-01 The New York Times Company System and method for automatically detecting and extracting semantically significant text from a HTML document associated with a plurality of HTML documents
US8554800B2 (en) 2008-07-30 2013-10-08 Portool Ltd. System, methods and applications for structured document indexing
US8296722B2 (en) * 2008-10-06 2012-10-23 International Business Machines Corporation Crawling of object model using transformation graph
US8255384B2 (en) * 2009-09-30 2012-08-28 Fujitsu Limited Client-tier validation of dynamic web applications
WO2011063561A1 (en) * 2009-11-25 2011-06-03 Hewlett-Packard Development Company, L. P. Data extraction method, computer program product and system
US8566702B2 (en) * 2010-09-20 2013-10-22 Blackberry Limited Methods and systems of outputting content of interest
US8832065B2 (en) * 2010-10-29 2014-09-09 Fujitsu Limited Technique for coordinating the distributed, parallel crawling of interactive client-server applications
US20120109931A1 (en) 2010-10-29 2012-05-03 Fujitsu Limited Technique for compression of state information in the crawling of interactive client-server applications
US8533684B2 (en) * 2010-11-01 2013-09-10 International Business Machines Corporation Source identification of compliance errors in a web page with custom widgets
US8572505B2 (en) 2011-01-31 2013-10-29 Oracle International Corporation Automatically testing a web application that has independent display trees
CA2738290C (en) 2011-04-28 2019-03-05 Ibm Canada Limited-Ibm Canada Limitee Exclusion of irrelevant data from a dom equivalence
CN102831121B (zh) 2011-06-15 2015-07-08 阿里巴巴集团控股有限公司 一种网页信息抽取的方法和系统
US8381094B1 (en) * 2011-09-28 2013-02-19 Fujitsu Limited Incremental visual comparison of web browser screens
JP5756386B2 (ja) * 2011-09-30 2015-07-29 インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation 動的なウェブ・アプリケーションの問題を修正するメタデータの生成・管理の支援方法、装置、およびプログラム
US8413046B1 (en) 2011-10-12 2013-04-02 Google Inc. System and method for optimizing rich web applications
CA2816781C (en) 2013-05-28 2022-07-05 Ibm Canada Limited - Ibm Canada Limitee Identifying client states

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11132409B2 (en) 2013-05-28 2021-09-28 International Business Machines Corporation Identifying client states

Also Published As

Publication number Publication date
US20160110455A1 (en) 2016-04-21
WO2014190427A1 (en) 2014-12-04
CA2816781C (en) 2022-07-05
US10078698B2 (en) 2018-09-18
US20180268060A1 (en) 2018-09-20
CA2816781A1 (en) 2014-11-28
US11132409B2 (en) 2021-09-28

Similar Documents

Publication Publication Date Title
DE112014001997T5 (de) Kennzeichnen von Client-Zuständen
DE69831708T2 (de) Effiziente Erkennung von Computerviren und andere Dateneigenschaften
DE202014010893U1 (de) Rufwegsucher
DE102013215661A1 (de) Kontextbezogene Suche nach einer gespeicherten Datei, die einem Graphenknoten zugehörig ist
DE112011103273B4 (de) Verfahren, Computerprogrammprodukt und Vorrichtung zur Weitergabe von Identitäten über Anwendungsebenen unter Verwendung von kontextabhängiger Zuordnung und gesetzten Werten
DE112015005728B4 (de) Automatisches Auffinden von Konfigurationselementen
DE202014010938U1 (de) Omega-Namen: Namenserzeugung und -ableitung
DE112015000347T5 (de) Verarbeiten von Datensätzen in einer Ablage für große Datenmengen
DE102014116369A1 (de) Verwaltung von sprachmarkern bei internationaler datenspeicherung
DE102014204840A1 (de) Verbessertes Datenintegrationswerkzeug
DE102013200159A1 (de) Management von Sicherheitsrichtlinien unter Verwendung einer Störungsanalyse
DE112013000656T5 (de) System und Verfahren zum Verringern der Speichernutzung durch optimales Platzieren von virtuellen Maschinen in einem virtualisierten Rechenzentrum
DE112012005051T5 (de) Korrekturbereitstellungssystem
DE112018005725T5 (de) Daten-deidentifikation auf der grundlage eines erkennens von zulässigen konfigurationen für daten-deidentifikationsprozesse
DE112012000526T5 (de) Malware - Erkennung
DE112012004247T5 (de) Passives Überwachen virtueller Systeme unter Verwendung einer erweiterbaren Indexierung
DE112018001290T5 (de) Verfahren zum Schätzen der Löschbarkeit von Datenobjekten
DE102012218699A1 (de) Passives überwachen virtueller systeme mittels agentenlosem offline-indexieren
DE102012217315A1 (de) Verwenden von nativen Routinen an Stelle von emulierten Routinen in einer emulierten Anwendung
DE102018010163A1 (de) Automatisches Generieren sinnvoller Nutzersegmente
DE112012004169T5 (de) Überwachen der Ausführung von gespeicherten Prozeduren
DE112012000305B4 (de) Gemeinsame Wiederherstellung von Datenquellen
DE112014002877T5 (de) Passives Überwachen von virtuellen Systemen mithilfe von agentenunabhängiger, echtzeitnaher Indexierung
DE112021000338T5 (de) Auslagern der statistikerfassung
DE202016007840U1 (de) Verankerungseinrichtungen mit geolokalisierter Bildsprache

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R079 Amendment of ipc main class

Free format text: PREVIOUS MAIN CLASS: G06F0017000000

Ipc: G06F0017220000

R079 Amendment of ipc main class

Free format text: PREVIOUS MAIN CLASS: G06F0017220000

Ipc: G06F0040120000

R016 Response to examination communication
R084 Declaration of willingness to licence