基于Selenium WebDriver的框架使用POM和java

时间:2018-02-09 03:26:37

标签: selenium webdriver

我正在尝试使用带有Selenium WebDriver和Java的POM来编写代码来验证网页(测试表格包含3个必填字段firstname,lastname,phone和2个按钮提交和清除表单)。

这是我到目前为止编写的代码。我想确认一下我是否会以正确的方式前进。

public class TestForm {
  WebDriver driver;

  By firstName=By.id("fname");
  By lastName=By.id("lname");
  By phoneno=By.id("phone");
  By submit=By.id("submit");
  By clearForm=By.xpath("//tagname[@type='button']");

  public TestForm(WebDriver driver)
  {
    this.driver=driver;
  }

  public void typeFirstName(String fname)
  {
    driver.findElement(firstName).sendKeys(fname);
  }

  public void typeLastName(String lname)
  {
    driver.findElement(lastName).sendKeys(lname);
  }

  public void typePhone(String phone)
  {
    driver.findElement(phoneno).sendKeys(phone);
  }

  public void clickSubmit()
  {
    driver.findElement(submit).click();
  }

  public void clickClearForm()
  {
    driver.findElement(clearForm).click();
  } 

}
public class VerifyTestForm {

  @Test
  public void verifyValidTestForm()
  {
    WebDriver driver=new FirefoxDriver();
    driver.manage().window().maximize();
    driver.get("url of the application");

    TestForm form=new TestForm(driver);
    form.typeFirstName("John");
    form.typeLastName("Adams");
    form.typePhone("1234567890");
    form.clickSubmit();
    form.clickClearForm();
    driver.quit();
  }
}

2 个答案:

答案 0 :(得分:0)

大多数代码看起来不错,但以下项目除外:

1)clearForm = By.xpath(“// tagname [@ type ='button']”);
   tagname应该是正确的标记,例如button或'输入'

2)点击“提交”后,页面仍保留在表单页面中,如果是这样,请致电clickClearForm

 form.clickSubmit();
 form.clickClearForm();

3)您的代码中没有任何检查点/验证,所有都在页面上进行操作。    //假设点击Submit按钮后会打开一个新页面    //如果它会改变,你需要检查由检查页面标题打开的新页面    //或检查属于新页面的元素是否显示

Assert(driver.getTitle()).toEqual('xxx')
Assert(driver.findElement(xxx).isDisplay()).toBe(true)

// above code may not exact correct, dependent on you choose Junit, TestNG
// or third-party Assert library.    

// After click `Clear/Reset` button, you should check all fields reset to default value
Assert(form.readFirstName()).toEqual("")

4)对于测试类名称VerifyTestForm,最好使用Test开始或结束,例如TestxxxxxxTest

答案 1 :(得分:0)

由于您的代码是正确的,但这不是实现Page对象模型的方法。

  1. 您必须使用DataProvider的概念来实现框架。
  2. 制作一张Excel工作表并使用DataProvider提取数据。
  3. 制作一个新的类文件,从中可以读取excel数据。
  4. 使函数返回文件的2d数据。
  5. 因此,使用此实现框架的方法。

页面对象模型通常表示,我们必须将正在使用的每个模块制作成单独的页面,并返回最后一页的引用。