我想知道是否有可能获得网络元素的XPATH?
test = driver.find_elements_by_css_selector('div.menu-listes ul.menu.menu-horizontal.menu_left li h3')
for t in test:
//i want to have the XPATH
我试过了t.location
,但我得到了{'y': 0, 'x': 0}
答案 0 :(得分:2)
Python中duplicate question的答案(未经测试):
test = driver.find_elements_by_css_selector('div.menu-listes ul.menu.menu-horizontal.menu_left li h3')
for t in test:
driver.execute_script("""gPt=function(c){
if(c.id!==''){
return'id("'+c.id+'")'
}
if(c===document.body){
return c.tagName
}
var a=0;
var e=c.parentNode.childNodes;
for(var b=0;b<e.length;b++){
var d=e[b];
if(d===c){
return gPt(c.parentNode)+'/'+c.tagName+'['+(a+1)+']'
}
if(d.nodeType===1&&d.tagName===c.tagName){
a++
}
}
};
return gPt(arguments[0]).toLowerCase();""", t)
答案 1 :(得分:0)
不是真的。 xpath不是唯一的,如果它自动获得它,它可能不会那么有效和强大的xpath(例如,检查元素并检查谷歌Chrome给你的xpaths。它们通常是像div一样的东西[1] / div [2] / div / div ..等等)
如果你不关心你可能有一个糟糕的xpath,你可以编写一个继续获取父级的函数,直到你到达所有根,同时跟踪你选择的元素的路径。