我创建了一个基本的 JS 函数,它将在单击任何 HTML 元素时返回 xpath。但它给出了基本的xpath-例如像这样- //*[@id='main']/div[3]/div[1]/div[1]/ul[1]/li[2]/a[1]。
现在我的问题是,是否有任何明智的方法可以像获取后代、 sibling 等那样获得最佳的 xpath。并不总是像上面那样来自 id 和position。我想用它来测试应用程序,这样就可以省去手动编写xpath并节省额外的工作。
最佳答案
没有智能 xpath。只有好的(和没有任何成果的坏的!)
最重要的是:xpath 并不是唯一选择一个元素。
在 XML 中,给出的 xpath 更精确
//*[@id='main']/div[3]/div[1]/div[1]/ul[1]/li[2]/a[1]
如果我们做出一些假设,我们可以猜测 [1] 表示唯一,因此我们得到:
//*[@id='main']/div[3]/div/div/ul/li[2]/a
这只是一个猜测(当然是错误的)。
所以,你保留的是:
- 标签的路径:div, div, div, ul, li, a
- 一些参数:id
- 一些索引:3, 2
如果知道id=main的标签中只有一个标签,
你可以这样做:
//*[@id='main']//a
结论:只有当你知道你的main的良好(稳定)结构,你才能自己创建智能xpath
如果没有,你可以像我一样尝试一些技巧,但大多数情况下是不可预测的,而且不可靠。
自动完成这件事很难。
关于javascript - 有没有什么工具可以智能获取xpath,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34448174/