对于具有步骤层次结构(Region-Site-Zone-ZoneID)的复杂站点,我正在尝试构建一个动态xpath来计算ZoneID(1..10)
<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>
码
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);
}
}
问题:如何组合代码行By ByZoneName = By.xpath(“// span [。='”+ zoneName +“']”); for dynamic zoneName id(对于相同的执行VAD1,VAD2,VAD3 .... VAD10)
实际:这个结构是针对zoneName = VAD1正确执行的,然后在第二个curcle中失败,出现异常---无法定位元素:{“method”:“xpath”,“selector”:“// span [。” VAD“]”}
问题:如何使用zoneName为xpath创建动态结构?
即By ByZoneName = By.xpath(“// span [。='”+ zoneName.lastIndexOf(num)+“']”);失败,异常无法找到元素:{“method”:“xpath”,“selector”:“// span [。=' - 1']”}
在循环内部,您需要首先建立网页,或者在尝试查找并单击另一个Web元素之前,在循环结束时导航回原始页面。
它找不到下一个区域,因为页面不一样。