动态 ID 的 PageObject 模型? C#

PageObject model for a dynamic id? c#

想知道是否可以为动态的 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+ 简单来说就是我理想中需要的东西。

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

我建议在作为索引的 PageObject 构造函数中添加参数。

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

例如:

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

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

你可以尝试这样的事情。

private IList<IWebElement> ListOfElements => Driver.FindElements(By.XPath("//p[contains(@id,'r-number-')]"));
//this finds all the p elements on the page with an id that contains r-number-

    public void ClickEachOne()
    {
        // click each element in that list

        foreach (var element in ListOfElements)
        {
            element.Click();
        }
    }