使用PageFactory将现有代码转换为PageObject设计模式

时间:2013-02-12 18:41:16

标签: webdriver selenium-webdriver pageobjects

我正在使用Selenium 2 Web Driver和C#.Net创建测试。在阅读了很多Selenium文档之后,我不确定我是否遵循了正确的设计模式,并且不确定如何使用PageObject设计模式进行测试。

这是我在我的页面上使用的当前代码及其工作

WaitForElement(By.CssSelector("input#ctl00_ctl00_signinControl_txtUsername")).SendKeys("abc123");
WaitForElement(By.CssSelector("input#ctl00_ctl00_signinControl_txtPassword")).SendKeys("password");

SelectElement select;
IWebElement selElement = WaitForElement(By.CssSelector("select#ctl00_ctl00_ddlGoTo"));
select = new SelectElement(selElement);
select.SelectByText("Homepage");

*<more code .....>*

我也告诉过我不能使用pageFactory使用Select页面元素。

我是否需要按照编码方式更改代码?任何反馈都会很棒。

1 个答案:

答案 0 :(得分:0)

页面对象模式的想法是拥有一个表示页面的对象。您实质上是在编写一个API来了解如何与页面进行交互。

例如,登录页面对象可能具有以下方法:

  • enterUserName(String userName);
  • enterPassword(String password);
  • clickLoginButton();

使用页面对象与页面交互的人不需要关心selenium如何找到元素并与之交互。如果字段上的id发生更改,则只需更改页面对象上的定位器,而无需更改调用关联页面对象公共方法的所有测试。