动态访问页面对象元素

时间:2016-09-11 20:42:05

标签: c# selenium selenium-webdriver

我正在创建我的第一页对象模型测试。基于Selenium's test design considerations我想验证在实例化页面对象时找到某些元素。

  

可以而且应该在页面对象中进行单一验证,即验证页面以及页面上可能的关键元素是否已正确加载。< / p>

有没有办法解决这个问题而不诉诸反思?

public class PageObject
{
    [FindsBy(How = How.Name, Using = "q")]
    private IWebElement q1 { get; set; }

    [FindsBy(How = How.Name, Using = "qq")]
    private IWebElement q2 { get; set; }

    protected IWebDriver webDriver;

    public PageObject(IWebDriver webDriver)
    {
        this.webDriver = webDriver;

        PageFactory.InitElements(webDriver, this);
        HighPriorityElementsFound();
    }

    private bool HighPriorityElementsFound()
    {
        // how to verify all private IWebElements elements here?
    }
}

1 个答案:

答案 0 :(得分:0)

我通常使用构造函数来验证我是否在正确的页面上,我通过识别URL的一部分(URL包含付款页面的“payments.asp”)和一些仅对于唯一的元素来执行此操作此特定页面与网站上的其他页面。如果该元素不存在,那么我会抛出一条带有消息的异常并记录我当前所在的URL。这有帮助,因为它可以让您立即知道您不在您希望登陆的页面上或页面未正确加载。

另一个注意事项......不需要HighPriorityElementsFound()。您只是要从构造函数中调用该代码,那么为什么不将该代码放在构造函数中?