Odoo V14 - lxml.etree.XPathSyntaxError: Invalid predicate

Odoo V14 - lxml.etree.XPathSyntaxError: Invalid predicate

我正在开发一个新模块,该模块包括在 stock_picking 报告中添加产品重量和总重量,但我的 xpaths 有问题。

错误:lxml.etree.XPathSyntaxError: Invalid predicate

我已经很仔细地看了他们,但我找不到问题所在。你能帮帮我吗?

代码:

<?xml version="1.0" encoding="utf-8"?>
<odoo>
    <template id="report_picking_inherit" inherit_id="stock.report_picking">

         <xpath expr="//td[contains(@t-if, 'has_barcode') and contains(@class, 'text-center')]" position="after">
                <td>
                    <span t-if="o.state != 'done'" t-esc="ml.product_id.weight"/>
                    <span t-if="o.state == 'done'" t-esc="ml.product_id.weight"/>
                </td>
        </xpath>

        <xpath expr="//table[contains(@t-if, 'o.move_line_ids') and contains(@t-if, 'and') and contains(@t-if, 'o.move_ids_without_package')" position="after">
                <span t-field="o.stock_total_weight"/>
        </xpath>

    </template>
</odoo>

提前致谢...

写入 xpath 时出现问题。

Odoo 中有 三种 类型的元素定位器用于匹配目标元素 Xpath

示例:

<xpath expr="page[@name='pg']/group[@name='gp']/field" position="inside">
    <field name="description"/>
</xpath>

<field name="res_id" position="after"/>

<div name="name" position="replace">
    <div name="name2">
        <field name="name2"/>
    </div>
</div>

你的代码是这样的:

<xpath expr="//table[@t-if='o.move_line_ids and o.move_ids_without_package']//tbody//td[@t-if=t-if='has_barcode']" position="after">
    <td>
        <span t-if="o.state != 'done'" t-esc="ml.product_id.weight"/>
        <span t-if="o.state == 'done'" t-esc="ml.product_id.weight"/>
    </td>
</xpath>

“predicate”是方括号中的 xpath 部分,因此您想在那里寻找问题。仔细观察,//table[contains(@t-if, 'o.move_line_ids') and contains(@t-if, 'and') and contains(@t-if, 'o.move_ids_without_package')

中缺少右方括号

试一试

<xpath expr="//table[contains(@t-if, 'o.move_line_ids') and contains(@t-if, 'and') and contains(@t-if, 'o.move_ids_without_package')]" position="after">