当前位置: 首页 > 知识库问答 >
问题:

Selenium xpath用于复杂动态范围

徐淳
2023-03-14

对于具有step层次结构(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);

    }

} 

问题:如何按ByZoneName=By.xpath组合代码行(“//span[.='”+zonename+“']”);对于动态区域名id(对于相同的执行VAD1、VAD2、vad3...VAD10)

实际:此结构对zoneName=vad1正确执行,然后在第二个循环中失败,但有异常---找不到元素:{“method”:“XPath”,“selector”:“//span[.'vad']”}

问题:如何用ZoneName为xpath创建动态结构?

即ByZoneName=By.XPath(“//SPAN[.='”+ZoneName.LastIndexOf(num)+“']”);失败,但出现异常:找不到元素:{“method”:“XPath”,“selector”:“//span[.='-1']”}

共有1个答案

姜鹏程
2023-03-14

在循环中,您需要首先建立web页面,或者在尝试定位并单击另一个web元素之前,在循环结束时导航回原始页面。

它无法找到下一个区域,因为页面不相同。

 类似资料:
  • 这个代码的结果是: 4 4 8 我可以问为什么吗?我试图通过绘制图表来理解它。但这从来都没有意义。如何将 x 更改为 4?

  • 问题内容: 嗨,我正在尝试在SQL Server下表中进行数据透视 我希望输出为 原始表中的列数是已知的,但行数是未知的。谁能帮忙 问题答案: 如果要将数字包括在列名中,则仍然需要先取消透视和列,然后再应用透视。所不同的是,您会将数字连接到在取消透视过程中创建的列名。 对于已知数量的值,查询将为: 然后,如果您有未知的数字,则动态SQL版本将为:

  • 为了验证$count是否包含我显示的值$count和$end,它们都显示正确的值。当我尝试显示$range时,它被显示为->“$range”,就好像它是html页面上的字符串,而不是速度变量!我卡住了,好心帮我弄清楚出了什么问题。提前感谢! 我使用netbeans和spring mvc中的velocity,我已经包含了所有所需的jar文件。

  • 我正在探索动态编程设计方法如何与问题的潜在组合属性相关联。 为此,我正在研究硬币兑换问题的典型实例:让和

  • 为了完成这项任务,我花了几周时间试图从其他建议中拼凑出一个完整的VBA,但现在我要向大家寻求答案。我试图从ws2中的a:K列中复制一个范围,该行以值c开头,该值与ws1中的值I匹配,该行以ws1中的值I开头。正在复制的条件是1和0。它基本上是一个美化的循环v形查找,粘贴动态范围。 我弄清楚了循环机制,现在我只需要帮助编写代码来复制选定的单元格。 这是我到目前为止所拥有的:

  • 高动态范围 作者|OpenCV-Python Tutorials 编译|Vincent 来源|OpenCV-Python Tutorials 目标 在本章中,我们将 了解如何根据曝光顺序生成和显示HDR图像。 使用曝光融合来合并曝光序列。 理论 高动态范围成像(HDRI或HDR)是一种用于成像和摄影的技术,可以比标准数字成像或摄影技术重现更大的动态亮度范围。虽然人眼可以适应各种光照条件,但是大多数