如何使用 JavaScript 在 Odoo12 Tour 测试中选择动态生成的下拉项?

问题描述 投票:0回答:1

我一直在进行自定义 Odoo12 巡回测试,并且在从动态生成的下拉列表中选择项目时遇到了问题。以下是我尝试实施的步骤的细分:

  1. 在表单中,游览单击名为“添加产品”的行。这将打开一个具有另一种形式的新模式。
  2. 在另一种形式中,产品 ID 或相关标识符被输入到产品名称框中。这会触发一个下拉列表,其中包含基于输入的查询的匹配产品建议。
  3. 这个想法是单击下拉列表中的第一个产品(这是基于所提供的输入的唯一匹配项)。
  4. 最后,游览在第二个模式上单击“保存”。

问题出现在步骤 3 中:下拉项似乎具有动态变化的 ID(例如,#o_field_input_170、#o_field_input_167 等),因此我无法定位特定 ID。

这是我尝试解决的问题:

  • 使用按键事件:我考虑过触发按键事件,但它似乎触发得太快,不允许首先加载下拉列表。所以我也尝试设置一个setTimeout,添加一个延迟,但是游览的后续步骤不会等待超时完成。
  • extra-triggers 和 waitFor:我已经尝试过 extra-triggers 和 waitFor,但这些方法在这种情况下似乎都不起作用(也许我只是做错了)。

这是带有 Key 事件的代码示例:

tour.register('test2_tour', {
        test: true,
        url: "/web",
        wait_for: base.ready(),
    }, [

        // previous steps...

        {
            content: "Click on Add a product",
            trigger: 'a:contains("Add a product")',
        },
        {
            content: "Set product code",
            trigger: '#o_field_input_875',
            run: 'text 167020',
        },
        {
            content: "Select the product",
            trigger: '#o_field_input_875',
            run: 'keydown 13',
        },
        {
            content: "Confirm the product",
            trigger: '.modal-footer > .btn:nth-child(1) > span',
        },
    ]);

下拉菜单的 CSS 选择器如下:

.o_form_nosheet > div:nth-child(3) > table:nth-child(1) > tbody:nth-child(1) > tr:nth-child(2) > td:nth-child(2) > div:nth-child(1) > div:nth-child(1)

HTML 框检查

有没有人遇到过类似的问题,或者有没有人有可靠的方法来等待并在 Odoo 游览测试中选择动态生成的下拉项目?

没有太多文档,特别是针对此主题的 Odoo12,因此任何可能有用的额外文档

预先感谢您的帮助!

javascript testing css-selectors odoo odoo-12
1个回答
0
投票

这种CSS选择器似乎没有问题,因为它也在官方插件中使用(插件website_slides>slides_tour.js):

{
    trigger: 'iframe li.breadcrumb-item:nth-child(2)',
    content: Markup(_t("Click on your <b>Course</b> to go back to the table of content.")),
    position: 'top',
}
© www.soinside.com 2019 - 2024. All rights reserved.