【问题标题】:Creating Dynamic XPath with function parameters (WebdriverIO)使用函数参数创建动态 XPath (WebdriverIO)
【发布时间】:2023-01-04 12:46:26
【问题描述】:

因此,我正在自动化测试 Web 应用程序的命令中心样式(本质上是万无一失的 SQL 语句,前端有大量字段验证)。 在 20 个类别下有 125 个这样的语句,单击它们会展开/折叠以显示/隐藏其子命令。 有没有一种方法可以使用黄瓜传递的参数动态创建 XPath 选择器,而不是指定 125 个 getter 函数(以及黄瓜传递的参数上的 125 个大小写开关)?例如:

When(/^I select (.*) menu item$/, async (menuItem) => {
    switch (menuItem) {
        case "Activate User":
            await PageObject.element1.click();
            break;
        case "Change Email Address":
            await PageObject.element2.click();
            break;
        case "Change User Password":
            await PageObject.element3.click();
            break;
           //ETC 122 more times

单行查找并单击 [li] 元素会容易得多:

When(/^I select (.*) menu item$/, async (menuItem) => {
            await browser.$('//li[contains(text(),\'' + menuItem + '\')]').click();
}

但这不起作用。任何人都知道为什么或对如何让它工作有任何建议?谢谢,谢普

【问题讨论】:

    标签: javascript node.js ui-automation webdriver-io wdio


    【解决方案1】:
    ```
    When(/^I select "([^"]*)" menu item$/,  async function (menuItem) {
        const menu_item = await $('//li[contains(text(),'' + menuItem+ '')]')
        console.log(menu_item )
        await menu_item.click()
    });
    ```
    

    也许像这样

    【讨论】:

    • 正如目前所写,您的答案尚不清楚。请edit 添加更多详细信息,以帮助其他人了解这如何解决所提出的问题。你可以找到更多关于如何写出好的答案的信息in the help center
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-27
    • 2019-05-09
    • 2018-10-29
    • 2020-11-11
    • 2019-02-09
    • 1970-01-01
    相关资源
    最近更新 更多