【发布时间】:2009-11-25 22:42:45
【问题描述】:
有没有办法在运行时返回 Selenium 中元素的 xpath,每次返回页面时谁的 xpath 会发生变化?我需要从元素的 xpath 中提取一个随机数。
例如://div[@id='element_id-87462'] 其中 87462 是每次加载元素时的新随机数。我希望能够提取 87462 以便识别对象。
【问题讨论】:
有没有办法在运行时返回 Selenium 中元素的 xpath,每次返回页面时谁的 xpath 会发生变化?我需要从元素的 xpath 中提取一个随机数。
例如://div[@id='element_id-87462'] 其中 87462 是每次加载元素时的新随机数。我希望能够提取 87462 以便识别对象。
【问题讨论】:
使用 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}
【讨论】:
旁注:问题听起来像是 OP 正在使用 Wicket,它(半随机)生成元素 ID。我们发现覆盖 Wicket 行为并使用我们自己的 ID 生成器的方法是确定性的,对于可测试性更实用。
【讨论】:
听起来您需要使用 getAttribute 来检索 div 的“id”属性。看看:
顺便说一句,xpath 是您用来查找元素或查找属性的工具,但您对 xpath 本身并不真正感兴趣,您感兴趣的是 div 上的 id 属性。
【讨论】: