2017-06-08 10 views
0

Ich habe eine Dropdown-Taste in der EXTJS-Anwendung, die ich mit Selen-Web-Treiber zu automatisieren versuche.Identifizieren von ExtJS-Elementen mit Selen-Webdriver

auf das Bild klicken, ich werde eine Liste von Elementen in Form von <DIV> ‚s zu klicken wählen Sie aus

erhalten Sie mir bitte helfen, wie ich kann Gerät ein XPath dieses Bild klicken, die ich nicht verwenden sollten, "id" (wie es extjs ist, kann es von Zeit zu Zeit variieren). Wenn es einen Auswähler gibt, den ich für extjs verwenden kann, schlagen Sie bitte vor. Danke für Ihre Hilfe.

<DIV id=ext-gen2337 class=x-form-field-wrap style="WIDTH: 0px"> 
    <INPUT id=ext-gen2023 class=" x-form-text x-form-field" style="WIDTH: 297px" readOnly size=24 value="Clients with pending exceptions" name=ext-gen2023 autocomplete="off"> 
    <IMG id=ext-gen2338 class="x-form-trigger x-form-arrow-trigger" src="https://cloud-ua1.statestr.com/epwais/html/com.ssc.epw.gui.EPWHome/clear.cache.gif"> 
</DIV> 
+0

Auf einer Seite zur Kenntnis, möchten Sie vielleicht einen Blick auf Bryntum Siesta haben, Rahmen einer Testautomatisierung in ExtJS gemacht und speziell zugeschnitten auf ExtJS-Tests. – Alexander

Antwort

1

Versuchen unter XPathimg Element benötigt zum Spiel:

//input[@value="Clients with pending exceptions"]/following-sibling::img 
0

Also, wenn Sie ExtJS App starten testen wollen, und Sie wollen nicht die beste Lösung für dieses wie Sencha-Test verwenden oder Bruntum Siesta.

Der beste Weg, dies zu erreichen, ist Ihre eigene Schicht zwischen den ExtJS-Komponenten und der HTML-Domäne der Website zu schreiben.

können Sie weitere Informationen in meiner Antwort sehen hier https://stackoverflow.com/a/41718879/1768843

Aber was Sie tun müssen, ist die Ext.Component.Query zu bedienen, mit Selen Sie den Javascript-Code auf der Website ausführen können. Sie führen also die ext-Abfrage aus und übergeben dort den Ext-Selektor - zum Beispiel button[text=something] oder panel[name=mainPanel] einfach einen beliebigen ExtJS-Komponentenselektor. Dies gibt Ihnen das ExtJS-Objekt zurück und damit können Sie einfach .getDom() oder .getId() aufrufen, was Ihnen die tatsächliche Domäne oder ID zurückgibt, die im HTML verwendet wird. Als Nächstes können Sie einfach die Webdriver-Funktionen verwenden, um auf die HTML-Elemente in der Site zu klicken (oder etwas).

^^ Sie müssen dies tun, weil das ExtJS-Framework das HTML jedes Mal etwas anders erzeugen kann. Zum Beispiel fügen Sie einen neuen Container hinzu oder Sie aktualisieren Ihre ExtJS-Version und der HTML-Code wird geändert und Ihr Test kann nicht mehr funktionieren. Aber wenn Sie die Ext-Komponenten als Protokoll aufrufen, weil der Ext-Quellcode immer noch derselbe ist, werden Ihre Tests immer funktionieren.

Aber das ist ziemlich mühsam und viel Arbeit. Es ist viel besser, vorbereitete Lösungen wie den Sencha-Test zu verwenden, bei dem bereits alles vorbereitet ist, um ExtJS-Apps zu testen.

0

ich so etwas tun würde:

driver.findElement(By.xpath("//div[contains(@class, 'x-form-field-wrap')]//img")); 

oder

driver.findElement(By.xpath("//img[contains(@src, 'https://cloud-ua1.statestr.com/epwais/html/com.ssc.epw.gui.EPWHome/clear.cache.gif')]")); 
Verwandte Themen