Модель PageObject для динамического идентификатора?C # - PullRequest
0 голосов
/ 18 декабря 2018

Хотите знать, возможно ли разместить на странице объект с идентификатором, который будет динамическим?

Пример кода ниже:

    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 используется в нескольких местах и ​​в нескольких шагах спецпотокапоэтому было бы здорово иметь возможность превратить его в объект страницы.

RandPage.RandNumber+index+ в простых терминах, что мне бы идеально понадобилось.

Кто-нибудь знает о возможных путях?

Ответы [ 2 ]

0 голосов
/ 18 декабря 2018

Вы можете попробовать что-то вроде этого.

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();
        }
    }
0 голосов
/ 18 декабря 2018

Я бы предложил добавить параметр в конструктор PageObject, который будет индексом.

А затем вы можете создать страницу для этого индекса и использовать ее.

Например:

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

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