加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

xml – XPath随机选择子节点

发布时间:2020-12-16 23:48:15 所属栏目:百科 来源:网络整理
导读:我正在使用Selenium IDE进行一些Web应用程序测试,并希望引入一些随机性来分散我们的测试.我目前正在使用Selenium的storeAttributeValue,你给它一个XPath表达式,它存储匹配它的第一个元素(sorta).但是我不想存储第一个匹配项,我希望它随机选择一个子节点. 例
我正在使用Selenium IDE进行一些Web应用程序测试,并希望引入一些随机性来分散我们的测试.我目前正在使用Selenium的storeAttributeValue,你给它一个XPath表达式,它存储匹配它的第一个元素(sorta).但是我不想存储第一个匹配项,我希望它随机选择一个子节点.

例如

// table [@ id =’mytable’] // tr选择此表的所有tr子节点.
// table [@ id =’mytable’] // tr [0]选择第一个tr(假设现在是嵌套表)
// table [@ id =’mytable’] // tr [3]选择第三个tr等

有没有办法(完全在xpath中)我可以说“给我一个随机的tr”,即//表[@ id =’mytable’] // tr [SOMETHINGHERE]每次我’评估’/’运行’它会’return’在// table [@ id =’mytable’] // tr的集合中的一个tr节点.

如果XPath表达式不会从一个调用更改为另一个调用,并且输入源也将相同,那么您将需要通过参数化提供方差,否则将始终输出具有相同输入的相同函数相同的结果(这就是为什么我对声明范式做出评论).

就像是:

/table[@id='mytable']/tbody/tr[$pseudoRandom mod count(../tr) + 1]

如果每个输入源都有一个评估,那么XPath中最简单的伪随机性就是

/table[@id='mytable']/tbody/tr[count(//node()|//@*) mod count(../tr) + 1]

换句话说,使用整个输入源的某些属性作为种子进行一些伪随机性计算.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读