PageObject模型是否包含动态ID? C#

时间:2018-12-18 08:45:50

标签: c# selenium specflow pageobjects

想知道是否可以分页对象一个动态的ID吗?

下面的示例代码:

    int index = 0;
    foreach (var row in rows)
    {

        if (randNumber == row.FindElement(By.Id($"r-number-{index}")).Text)
        {
            row.FindElement(By.Id($"view-record-{index}")).Click();
            return;
        }
        index++;
    }

By.Id($"r-number-{index}")).Text在多个地方和多个specflow步骤中使用,因此能够将其转换为页面对象非常有用。

RandPage.RandNumber+index+简单来说就是我理想中需要的东西。

有人知道任何可能的方式吗?

2 个答案:

答案 0 :(得分:1)

我建议在PageObject构造函数中添加参数,这将是索引。

然后您可以为该索引创建页面并使用它。

例如:

public class MyPage
    {
            private int _index = 0;
            ...

            public MyPage(int index)
            {
               _index = index;
            }
            ...
            public MyMethod()
            {
                //do something with the _index here
            }
    }

答案 1 :(得分:1)

您可以尝试这样的事情。

REPLACE(PHRASE1, START, 4, PHRASE2)