2017-08-09 2 views
0

Ihre Hilfe bei dem unter Abfrage benötigen:Selen (Java): Umgang mit doppelten XPath aus verschiedenen Registern

Meine Website ist Tabbed-Struktur, also ich kann die gleiche Seite in mehreren Tabs öffnen. Jetzt Problem mit diesem ist ID wird dynamisch für jedes Feld w.r.t. seine Tab-Position.

Für z. ID für eine der Feld

auf Tab 3

tfgld4510m000 -3- grid-1-tfgld418.fitr-8-Filter-Wert-Kontrolle-widget

on Tab 7

tfgld4510m000 -7- grid-1-tfgld418.fitr-8-Filter-Wert-Kontrolle-widget

Ich möchte Locator erstellen, unabhängig von seiner Registerkarte Position, damit ich XPath erstellt

.//*[contains(@id,'grid-1-tfgld418.fitr-8-filter-value-control-widget')] 

Aber das Problem hier ist, wenn beide Tabs geöffnet sind und ich möchte auf dem Feld in Tab 7 diese XPath auch klicken erkennt Feld in Registerkarte 3.

Können Sie mir bitte mit einer Lösung helfen, damit ich auf das Feld zugreifen kann, unabhängig von Registerkartenposition.

+0

Also, was die genaue ist 'Problem mit diesem ist id für jedes Feld dynamischer wird wrt seine Tab-Position? Was sind Ihre genauen manuellen Schritte, die Sie zu automatisieren versuchen? – DebanjanB

+0

Betrachte ich habe zwei Tabs ... in Tab1 ID zum Speichern der Schaltfläche ist 'XXX-1-save' und auf Tab2 ist 'XXX-2-save' ... jetzt möchte ich auf Speichern in Tab2 ... klicken wenn du xpath benutzt .//* [contains (@ id = 'save')] ... erkennt es beide locators auf tab1 und 2 .. und throws element ist nicht anklickbar, da control auf tab2 ist. Ich hoffe es erklärt das Ausgabe .. – Robin

+0

Nein, mit 'xpath .//* [contains (@ id = 'save')]' sollte nicht beide Locatoren auf 'tab1 und 2' gefunden werden. Seleniums Fokus liegt immer noch auf der Seite "1". Sie müssen 'Selenium's Fokus auf' Tab2' übertragen. Ein schneller Blick in Ihren Code-Block kann uns helfen zu diagnostizieren, wo Sie genau stecken bleiben. – DebanjanB

Antwort

0

können Sie dynamische XPath erstellen und den Wert übergeben, wie pro Sie

erforderlich
int a = 7; 
driver.findElement(By.xpath(".//*[@id='tfgld4510m000 -"+a+"- grid-1-tfgld418.fitr-8-filter-value-control-widget']")); 

Hoffe, es wird Ihnen helfen :)

+0

Ich versuchte dies vor .. und seine arbeiten, aber ich benutze Hybrid-Framework, die Schlüsselwörter und Daten aus Excel liest .. so Problem mit dieser Methode ist ich bereits viele Daten wie Kunde, Artikel etc. zu dieser Keyword-Methode holen. Ich möchte also verhindern, Tab-Nr. und erstellen Sie einen verallgemeinerten xpath, so dass er unabhängig von der Tab-Reihenfolge funktionieren sollte. – Robin

+0

Ist auf der Seite ein Attribut vorhanden, das dieses Attribut für Sie definieren kann? Beispiel: Wenn Ihre URL oder ein anderes Attribut Ihre Tab-Nummer zurückgeben kann, müssen Sie diesen Wert nur in Ihrem int übergeben. so dynamisch wird Ihr xpath erstellt –

+0

Sie können getAttribute-Methode verwenden und den Wert in Zeichenfolge abrufen und dann verschüttet Methode verwenden, können Sie die Tab-Nummer extarct .. übergeben Sie es jetzt einfach zu int Variable nach Typcast –