【问题标题】:How to get the xpath for a link?如何获取链接的xpath?
【发布时间】:2015-11-26 20:44:18
【问题描述】:

我正在为 wicket 应用程序编写 selenium 测试,但无法获取一些 xpath。

例如:

我正在尝试获取链接的 xpath。这是由检票口动态创建的链接:

<span>
	<a id="id2b3" href="#" onclick="var wcall=wicketAjaxGet('./participante_geral?7-1.IBehaviorListener.0-containerDiv-frameSetDiv-gridDiv-linhas-body-rows-1-cells-2-cell-linkPanel',function() { }.bind(this),function() { }.bind(this), function() {return Wicket.$('id2b3') != null;}.bind(this));return !wcall;">
		<span>Some String</span>
	</a>
</span>

我正在尝试获取链接的 xpath,如下所示:

//a/span[(text() = 'Some String')]/..

但是当我运行我的 selenium 测试 WebDriver for firefox 时,我找不到元素/链接。

当我跑步时

$x("//a/span[(text() = 'Some String')]/..")

在铬控制台中,我可以成功定位元素。

但是当我在 Firefox 中运行相同的命令时,我会得到一个包含链接的数组。

我的 xpath 出了什么问题?

提前致谢。

【问题讨论】:

    标签: firefox selenium xpath wicket chromium


    【解决方案1】:

    在创建 xpath 时尝试遵循以下语法

    //标签名[@attribute='value']

    【讨论】:

      【解决方案2】:

      尝试使用contains函数-

      //a[@id='id2b3']/span[contains(text(), 'Some String')]
      

      【讨论】:

        【解决方案3】:

        Wicket 支持为该用例的每个组件呈现一个额外的属性,请参阅 IDebugSettings#setOutputComponentPath(boolean) [1]。这将呈现wicketpath 属性。你可以像这样使用它://a/[@wicketpath='grand:parent:child:id']。 这适用于 Wicket 1.5.x/6.x。

        对于 Wicket 7.x+,有 DebugSettings#setComponentPathAttributeName(String)。如果它是非空的,那么 Wicket 将使用这个字符串作为属性的名称,例如data-wicket-path.

        1. https://github.com/apache/wicket/blob/wicket-1.5.x/wicket-core/src/main/java/org/apache/wicket/settings/IDebugSettings.java#L39

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2020-11-04
          • 2016-02-12
          • 2012-04-23
          • 1970-01-01
          • 2018-12-23
          • 2021-03-31
          • 1970-01-01
          相关资源
          最近更新 更多