0

我正在做自动化测试。我使用 SelectorHub 在网站中查找元素。在某些情况下,我会得到非常长的相对 Xpath,如下所示:

//body/div[@id='app']/div[@class='...']/div[@role='...']/div[@class='...']/div[@class='...']/div[@class='...']/div/div/div[@class='']/textarea"));

正如我正确理解的那样,如果网站将来发生更改,它将失败,因为它有太多的“DIV”。那为什么说相对 Xpath 是可靠的呢?我无法手动创建更短的路径来找到可靠的路径。

4

1 回答 1

0

今天在特定 HTML 页面 H1 上工作的任何 XPath 在(将来)应用于不同的 HTML 页面 H2 时可能会或可能不会产生相同的结果。如果您希望它有最好的机会返回相同的结果,那么您希望最小化它的依赖关系,特别是,您希望避免对最有可能改变的 H1 的属性产生依赖关系。当然,这完全是主观的。可以说,你的路径表达式越长,它的依赖项就越多(也就是说,可能导致它中断的更改数量越多)。但这并不是普遍正确的:该表达式(//*)[842]可能是定位特定元素的最短 XPath 表达式,但它也非常脆弱:如果 HTML 更改,它可能会中断。使用属性的表达式id(例如//p[@id='Introduction']通常被认为是相当稳定的,但如果 id 值发生变化,它们也会中断。

最重要的是,这完全是主观的。编写能够适应 HTML 内容变化的 XPath 表达式是一门艺术,而不是一门科学。它只能通过阅读设计 HTML 页面的人的想法来完成。

于 2021-11-22T00:45:31.170 回答