xml - XPath 随机选择一个子节点

标签 xml xpath selenium

我正在使用 Selenium IDE 进行一些网络应用程序测试,并且想引入一些随机性来分散我们的测试。我目前正在使用 Selenium 的 storeAttributeValue,您可以在其中给它一个 XPath 表达式,它会存储与其匹配的第一个元素(sorta)。但是我不想存储第一个匹配项,我希望它随机选择一个子节点。

例如

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

有什么方法(完全在 xpath 中)我可以说“给我一个随机的 tr”,即 //table[@id='mytable']//tr[SOMETHINGHERE] 每次我“评估”/“运行”它将“返回”//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]

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

关于xml - XPath 随机选择一个子节点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5119218/

相关文章:

java - 将渐变边缘应用到 ImageView

xml - 如何在没有testng.xml文件的情况下执行Testng和Maven

java - 在 Selenium Java 中获取 ElementNotInteractableException 错误

java - 如何使 Jackson 的序列化包含属性尊重 JAXB "required"属性?

java - 当我尝试解析 xml 时收到无效字节

xml - 使用“。” XPath表达式中的(点或句点)

memory-management - libXML:检查节点是否已经取消链接并释放

.net - XPATH 查询以查找包含关键字的属性

python - 连接被拒绝且轮询更改失败 : NetworkError when attempting to fetch resource error with Selenium GeckoDriver and Firefox

java - 使用 STaX 将一个 xml 转换为另一个 xml 需要花费大量时间