Selenium Python在循环中查找当前节点的实际xPath

Selenium Python在循环中查找当前节点的实际xPath,python,firefox,selenium,xpath,web-scraping,Python,Firefox,Selenium,Xpath,Web Scraping,现在我需要的是元素的实际路径。正如您所看到的,我正在动态xpath代码中遍历图像范围。现在,如果我在一个循环中,并且在那里,我需要当前动态标识图像的确切的xpath 例如,如果它正在为第一个映像运行,那么它应该给出: /html/body/div[5]/div[3]/div[1]/div[3]/div[4]/form[1]/img[1] 如果是第二次运行,则: /html/body/div[5]/div[3]/div[1]/div[3]/div[4]/form[1]/img[2] 我想提取该循环

现在我需要的是元素的实际路径。正如您所看到的,我正在动态xpath代码中遍历图像范围。现在,如果我在一个循环中,并且在那里,我需要当前动态标识图像的确切的
xpath

例如,如果它正在为第一个映像运行,那么它应该给出:

/html/body/div[5]/div[3]/div[1]/div[3]/div[4]/form[1]/img[1]

如果是第二次运行,则:

/html/body/div[5]/div[3]/div[1]/div[3]/div[4]/form[1]/img[2]

我想提取该循环中当前节点的实际
xpath

现在有点像PHP:

browser = webdriver.Firefox()
browser.get("http://www.example.com/admin/orders")
total_images = len(browser.find_elements_by_xpath('/html/body/div[5]/div[3]/div[1]/div[3]/div[4]/form[1]//img'))
for i in range(1,total_images):
            compiledData['item_url'] = browser.find_elements_by_xpath(browser.xpath('/html/body/div[5]/div[3]/div[1]/div[3]/div[4]/form[1]//img[')+str(']'))

其中,
$breakup->item(0)->getNodePath()
给出动态标识的
xPath

的真实
xPath

,这里的一个选项是使用此处建议的xPath生成函数之一:

并使用。示例代码:

$breakup = $xpath->query('/html/body/div[5]/div[3]/div[1]/div[3]//*[text()="Package total"]');
if($breakup->length != 0)
{
    $breakupPath = substr($breakup->item(0)->getNodePath(), 0, -2)."2]";
    $orderData['total'] = str_replace("Rs.", "", trim($xpath->query($breakupPath)->item(0)->nodeValue));
}

谢谢你的回答,让我检查一下,我会告诉你最新情况。@Djangonymous,你检查过这个答案是否值得你的赏金吗?
from selenium import webdriver


driver = webdriver.Firefox()
driver.get("http://www.w3schools.com/")


driver.execute_script("""
window.getPathTo = function (element) {
    if (element.id!=='')
        return 'id("'+element.id+'")';
    if (element===document.body)
        return element.tagName;

    var ix= 0;
    var siblings= element.parentNode.childNodes;
    for (var i= 0; i<siblings.length; i++) {
        var sibling= siblings[i];
        if (sibling===element)
            return window.getPathTo(element.parentNode)+'/'+element.tagName+'['+(ix+1)+']';
        if (sibling.nodeType===1 && sibling.tagName===element.tagName)
            ix++;
    }
}
""")

element = driver.find_element_by_class_name("w3-fluid")

generated_xpath = driver.execute_script("return window.getPathTo(arguments[0]);", element)
print(generated_xpath)
from selenium import webdriver
import lxml.html


driver = webdriver.Firefox()
driver.get("http://www.w3schools.com/")

tree = lxml.html.fromstring(driver.page_source)
root = tree.getroottree()

driver.close()

element = tree.xpath("//*[@class='w3-fluid']")[0]
print(root.getpath(element))