【问题标题】:How to find the XPath of Selenium WebDriver? [duplicate]如何找到 Selenium WebDriver 的 XPath? [复制]
【发布时间】:2026-01-11 09:30:01
【问题描述】:

我想知道是否可以获取 web 元素的 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}

【问题讨论】:

  • 为什么不直接找到 xpath 本身而不是使用 css 选择器?
  • 这只是一个例子,我想知道是否可以获取 web 元素的 xpath
  • 你应该把html标签放在这里吗?您是否尝试从 css 定位器中查找 xpath?
  • @RemcoW 谢谢,我在发帖前搜索了但我没有看到那个问题,但是答案是在 JAVA 中,我需要它在 Python 中
  • @abhijeetkanade 不,我尝试从 web 元素中找到 xpath

标签: python selenium xpath selenium-webdriver webdriver


【解决方案1】:

duplicate question 在 Python 中的答案(未经测试):

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)

【讨论】:

  • 如果你使用一个三引号字符串而不是一堆引号字符串,这段代码可能更容易编写。
  • @BryanOakley 公平点,我会改变它。
【解决方案2】:

不是真的。 xpath 不是唯一的,如果它确实自动获取它,它可能不会像 xpath 那样高效和健壮(例如,检查元素并查看 Google Chrome 为您提供的 xpath。它们通常类似于 div [1]/div[2]/div/div .. 等)

如果您不关心您可能有一个错误的 xpath 的事实,您可以编写一个函数,在您到达根之前一直获取父级,同时跟踪您选择的元素的路径。

【讨论】:

    最近更新 更多