如何找到Selenium WebDriver的XPath?

时间:2016-06-30 15:07:14

标签: python selenium xpath selenium-webdriver webdriver

我想知道是否有可能获得网络元素的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}

2 个答案:

答案 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,你可以编写一个继续获取父级的函数,直到你到达所有根,同时跟踪你选择的元素的路径。