Selenium中相对XPath和绝对XPath的区别是什么?
我们可以通过两种方式创建xpath – 相对路径和绝对路径。绝对xpath 包含从根节点到我们想要识别的元素的完整路径。
绝对xpath以/ 符号开头。绝对xpath的一个缺点是,如果从根节点到元素的任何属性发生更改,我们的绝对xpath将失效。
相对xpath 从我们想要识别的元素开始,而不是从根节点开始。相对xpath以// 符号开头。它主要用于自动化,因为即使在DOM中删除或添加了元素,相对xpath也不会受到影响。
绝对xpath冗长且难以维护(html/body/tagname/…)。而相对xpath简短(//*[@attribute='value'])。让我们在下面的页面上识别主页菜单:
让我们研究一下从根节点开始的主页元素的HTML代码。
此元素的绝对xpath是/html/body/div[1]/div/div[1]/a。它可以通过浏览器控制台(按F12打开)中的表达式$x("/html/body/div[1]/div/div[1]/a")进行验证。图片显示了从绝对xpath表达式获得的匹配元素。
此元素的相对xpath是//a[@title='TutorialsPoint - Home']。它可以通过浏览器控制台中的表达式$x("//a[@title='TutorialsPoint - Home']")进行验证。图片显示了从相对xpath表达式获得的匹配元素。
广告