gpt4 book ai didi

c# - Selenium PageObjects 模式和组件

转载 作者:太空狗 更新时间:2023-10-29 23:52:06 25 4
gpt4 key购买 nike

将 PageObjects 模式应用于页面组件时的标准方法是什么?

举个例子,假设我正在为亚马逊产品页面上的功能编写测试。

该页面包含大量单独的功能、产品信息、查看此内容的客户、推荐的其他客户等。

我目前看到的有关 PageObjects 的示例实际上只涵盖了如何处理功能有限的单个页面。我正在寻找的是类似于 PageObject 的东西,它代表产品页面,然后由代表每个组件的 ComponentObjects 组成。

例如:

public class ProductPage
{
[FindsBy(How = How.Id, Using = "productInformation")]
public ProductInformationControl ProductionInformation{get;set}

[FindsBy(How = How.Id, Using = "customersViewed")]
public CustomersAlsoViewedControl CustomersAlsoViewed{get;set}

[FindsBy(How = How.Id, Using = "customersSuggested")]
public CustomersSuggestedControl CustomersSuggested{get;set}
}

public class ProductInformationControl
{
//Ideally the FindsBy here would find the element based on the Controls context
// So only resolving to an element that was within the context of this control.
[FindsBy(How = How.ClassName, Using = "title")]
private IWebElement _title;

public string Title
{
get
{
return _title.Text;
}
}
}

然后在测试中我会像这样访问控件:

 var productPage = ScenarioContext.Current.Get<ProductPage>();
Assert.That(productPage.ProductInformation.GetTitle(), Is.EqualTo("My Title"));

我以前使用过这种方法,但使用了一个构建在 Selenium 之上的自定义框架,该框架允许解析子对象及其组件。我正在寻找的是开箱即​​用的 Selenium 2 和 C# 方法。

最佳答案

没有现成的方法可以做到这一点。你的方法很好,您可以通过使用 IElementLocator 和 IPageObjectMemberDecorator 的自定义实现调用 PageFactory.InitElements() 来实现它看到这个答案: How to initialize SelectElements while using PageFactory / FindsBy in Selenium C#?

关于c# - Selenium PageObjects 模式和组件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12815145/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com