【问题标题】:Is there a way to dynamically get an xpath of an element during runtime in Selenium有没有办法在 Selenium 运行时动态获取元素的 xpath
【发布时间】:2009-11-25 22:42:45
【问题描述】:

有没有办法在运行时返回 Selenium 中元素的 xpath,每次返回页面时谁的 xpath 会发生变化?我需要从元素的 xpath 中提取一个随机数。

例如://div[@id='element_id-87462'] 其中 87462 是每次加载元素时的新随机数。我希望能够提取 87462 以便识别对象。

【问题讨论】:

    标签: java xpath selenium


    【解决方案1】:

    使用 xpath contains() 函数。

    storeAttribute | //div[contains(text(),'your known text here')]@id | myid
    echo | ${myid}
    

    如果您只想要数字部分,请添加一些 javascript 并替换“element_id-”部分。

    storeAttribute | //div[contains(text(),'your known text here')]@id | myid
    storeEval | var number = "${myid}".replace("element_id-","");number; | numid
    echo | ${myid}
    echo | ${numid}
    

    【讨论】:

    • 感谢您的回复,但我遇到的问题是我需要从具有相同 xpath id(减去随机 #)的元素列表中检索此元素。我知道这个元素的文本,有没有办法返回我知道元素内文本的元素的 xpath。
    • 更新为基于元素内的已知文本。
    【解决方案2】:

    旁注:问题听起来像是 OP 正在使用 Wicket,它(半随机)生成元素 ID。我们发现覆盖 Wicket 行为并使用我们自己的 ID 生成器的方法是确定性的,对于可测试性更实用。

    【讨论】:

      【解决方案3】:

      听起来您需要使用 getAttribute 来检索 div 的“id”属性。看看:

      顺便说一句,xpath 是您用来查找元素或查找属性的工具,但您对 xpath 本身并不真正感兴趣,您感兴趣的是 div 上的 id 属性。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-09-23
        • 1970-01-01
        • 2015-01-26
        • 1970-01-01
        • 2019-11-16
        • 1970-01-01
        相关资源
        最近更新 更多