2017-12-16 3 views
0

Für komplexe Website, die einen Schritt hierarchische Struktur (Region-Standort-Zone-ZoneID) hat, Ich versuche, eine dynamische XPath zum Zählen ZoneID (1..10)Selen XPath für komplexe dynamische Spannweite

zu bauen Structure

<div class="aic-tree-branch-content VAD2" ng-click="events.selectZone(site.id, zone.id)"> 
 
    <span class="new-sprite unimported selected" ng-class="{'imported': zone.zoneImported, 'unimported': !zone.zoneImported, 'selected': zone.zoneName === selecteds.zone}"></span> 
 
    <span class="aic-tree-branch-content-name ng-binding" ng-bind-html="zone.zoneName | highlightFilter: model.searchTerm" ng-click="ui.selectTreeNode(zone.zoneName, 'zone')">VAD2</span> 
 
    <span class="aic-tree-branch-content-type zone-type ng-binding" ng-bind="'('+zone.designTypeName+')'">(M)</span> 
 
    <span class="aic-tree-branch-content-icon new-sprite zone-state in-creation-small" ng-class="ui.getZoneStatusIcon(zone.zoneState, zone.zonePhase)"></span> 
 
</div>

-Code

public static void refreshAndOpenMultiZones(WebDriver driver, String SiteName, String zoneName) throws Exception { 
 

 
    driver.navigate().refresh(); 
 

 
    for (int num=1; num<3; num++) { 
 

 
     logger.info("Open existing zone: " + SiteName + num + " in North America"); 
 

 
     //Select desired zone in site 
 
     By ByZoneName = By.xpath("//span[.='"+zoneName+"']"); 
 
     
 
     logger.info("Select Zone: "+ zoneName); 
 
     Utils.wait(5); 
 
     driver.findElement(ByZoneName).click(); 
 

 
     logger.info("Wait for page to be loaded"); 
 
     GeneralUtils.waitForElevationPage(driver, timeOutSec); 
 

 
    } 
 

 
}

Das Problem: ("[. = // Spanne ' "+ zonename +"']") Wie die Codezeile von ByZoneName = By.xpath kombinieren; für dynamische zonename-ID (für die gleiche Ausführung VAD1, VAD2, VAD3 .... VAD10)

Actual: Diese Struktur korrekt für zonename = VAD1 und nach diesem in der zweiten curcle ausgeführt wird, kann nicht mit Ausnahme --- Unable Element zu finden: { "Methode": "XPath", "Selektor": "[. 'VAD'] // span"}

Frage: Wie dynamische Struktur schaffen für XPath mit Zonenname?

d.h. von ByZoneName = By.xpath ("// Spanne [=. ' "+ Zonename lastIndexOf (num) +."']"); mit Ausnahme fehlgeschlagen Unable Element zu finden: { "Methode": "XPath", "Selektor": "[. = '- 1'] // span"}

+0

Können Sie Ihre Frage bearbeiten und deutlich den XML-Code anzeigen, den Sie mit XPath analysieren möchten? –

Antwort

0

Innerhalb der Schleife müssen Sie entweder zunächst Richten Sie die Webseite ein oder navigieren Sie am Ende der Schleife zu der Originalseite ZURÜCK, bevor Sie versuchen, ein anderes Webelement zu finden und darauf zu klicken.

Die nächste Zone kann nicht gefunden werden, da die Seite nicht identisch ist.