【问题标题】:Xpath how to located div into another div?Xpath如何将div定位到另一个div?
【发布时间】:2016-08-14 12:04:27
【问题描述】:

我是 odoo 和 xpath 的新手。在谷歌搜索和阅读堆栈中的所有类似问题之后。我找不到解决问题的方法:

如何使用 xpath 将 div 定位到另一个 div 中?

以下是我达到目标的所有失败尝试:

<?xml version="1.0" encoding="utf-8" ?>
<openerp>
  <data>
    <!-- Customize header  -->
    <template id="custom_header" inherit_id="website.layout" name="Custom Header">
       <xpath expr="//div[@id='wrapwrap']/main/div[1]" position="attributes">
           <attribute name="id">my_target</attribute>
       </xpath>

      <xpath expr="//div[@class='oe_structure oe_empty']" position="attributes">
           <attribute name="id">my_target</attribute>
      </xpath>

      <xpath expr="//div[@id='wrapwrap']/main/following-sibling::div[1]/data()" position="attributes">
           <attribute name="id">my_target</attribute>
      </xpath>

      <xpath expr="//div[@id='wrapwrap']/main/following-sibling::div[1]" position="attributes">
        <attribute name="id">my_target</attribute>
      </xpath>

  </template>
  </data>
</openerp>

我有错误:

元素“....”不能位于父视图中。

但是,我在另一个任务中使用了以下表达式,并且效果很好:

 <?xml version="1.0" encoding="utf-8" ?>
<openerp>
  <data>
    <!-- Customize header  -->
    <template id="custom_header" inherit_id="website.layout" name="Custom Header">
      <xpath expr="//div[@id='wrapwrap']/header" position="attributes">
         <attribute name="id">my_header</attribute>
      </xpath>
    </template>
  </data>
</openerp>

下面的结构取自 chrome 检查器:

提前感谢您的帮助。

【问题讨论】:

  • 你在输入的任何地方都有xmlns="..."吗?很难从屏幕截图中分辨出来。
  • 只需点击图片即可全屏显示。还是你想发布一个xml代码而不是截图!!?
  • 我全屏查看它,看起来html 标签被切断了。实际数据很有帮助。很难复制/粘贴屏幕截图并实际尝试在其上运行 xpath。
  • 只是让您知道,使用 Chrome 调试器,您可以右键单击节点并转到 Copy -> Copy XPath。

标签: xpath odoo-8 openerp-8


【解决方案1】:

这里有几个有效的例子:

这些用于定位带有 id 包装的 div:

//div[@id='wrapwrap']//div[@id='wrap']
//main/div[@id='wrap']
//div[@id='wrap']

为了从这个 div 中找到具有类 'container oe_website_sale' 的 div 替换 @id='换行' 和 @class='容器 oe_website_sale'

有基于id的,也可以用class和class值替换id。

【讨论】:

  • 抱歉,以上示例均不适合我!!总是同样的错误“无法定位元素”... !!
  • 如果它是手动工作的,您可能有编码问题,或者可能因为页面未加载或您不在正确的页面上而找不到元素。我手动检查了所有变体,它们都在工作。
  • 我编辑了我的问题,向您展示了我调用 xpath 表达式的模板。
  • 这对我有用
【解决方案2】:

我想向您指出的主要一点是,在 XML 模板中,您修改的不是浏览器开发人员工具中可见的完整视图,而是 父 XML 模板本身 .

在这种情况下,您正在修改由inherit_id="website.layout" 属性指示的website.layout。您应该打开该模板并尝试根据其包含的内容而不是浏览器中的最终结果来修改元素。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-07-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-13
    • 2021-12-30
    • 1970-01-01
    相关资源
    最近更新 更多