动态 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();
}
}
想知道是否可以为动态的 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();
}
}