我创建了一个基本的JS函数,它会在点击任何HTML元素时返回xpath。但它给出了基本的xpath - 例如像这样 - //*[@id='main']/div[3]/div[1]/div[1]/ul[1]/li[2]/a[1].
现在我的问题是,是否有任何聪明的方法可以获得最好的xpath类似的后代,兄弟姐妹和所有。并不总是像上面那样从id和位置。我想用它来测试应用程序,以便省略手动编写xpath并保存额外的工作。
答案 0 :(得分:1)
没有智能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
这只是猜测(当然是假的)。
所以,你保留的是:
如果你知道只有一个< a>标签中包含id = main,
你可以这样做://*[@id='main']//a
结论:只有你知道你主要的好(稳定)结构,你才能自己创建智能xpath
如果没有,你可以尝试做一些像我一样的技巧,但在大多数情况下它是不可预测的,然后是不可靠的。
很难做到自动。