Java Selenium WebDriver页面对象模型描述
我是selenium webdriver自动化的新手。我正在使用Java编程语言,并开始遵循页面对象模型。我想知道基本的文件结构,以及如何推进它Java Selenium WebDriver页面对象模型描述,java,selenium-webdriver,pageobjects,Java,Selenium Webdriver,Pageobjects,我是selenium webdriver自动化的新手。我正在使用Java编程语言,并开始遵循页面对象模型。我想知道基本的文件结构,以及如何推进它 实际例子将非常有用。如果有人能分享他们的示例项目,那将是非常感谢的。感谢下面是一个小演示,演示如何使用Java和Selenium继续使用页面对象模型 我创建了两个类。一个类将用于存储页面上的所有web元素,另一个类将用于访问该类的web元素以执行预期操作 注意:主页是为存储web元素而创建的类 public class Homepage { p
实际例子将非常有用。如果有人能分享他们的示例项目,那将是非常感谢的。感谢下面是一个小演示,演示如何使用Java和Selenium继续使用页面对象模型 我创建了两个类。一个类将用于存储页面上的所有web元素,另一个类将用于访问该类的web元素以执行预期操作 注意:主页是为存储web元素而创建的类
public class Homepage {
private static WebElement element = null;
public static WebElement Generic_Search(WebDriver driver){
element = driver.findElement(By.id("searchTerm"));
return element;
}
public static WebElement Generic_Search_Count(WebDriver driver){
element = driver.findElement(By.xpath("//div[@class='facet-count']/strong"));
return element;
}
public static WebElement Generic_Search_Submit(WebDriver driver){
element = driver.findElement(By.className("search-submit"));
return element;
}
}
注意:Simple_User_Flow类将用于访问主页的web元素
记住这是一个非常简单的演示,您可以添加多个类并在主类中使用它们。我们可以根据类的功能或结构流对类进行分组。您可以在这个URL上按照我的答案进行操作: 我试图用一种非常简单的方式解释它 此外,为了供您参考,您可以按照下面的URL进行说明。
页面对象是一种众所周知的设计模式,被自动化工程师广泛接受,用于为应用程序的每个页面创建单独的类文件,将所有元素作为属性进行分组,并将其行为/业务功能作为类的方法进行分组。但是它在为页面创建类时没有什么问题,特别是当页面有更多/不同的元素集/复杂元素(如网格/日历小部件/HTML表等)时 该类可能包含太多无法处理的职责。它应该被重组并分成更小的类别。也就是说,遵循单一责任制 请查看此处的图像以了解想法 也就是说,创建可重用的页面片段&让主页对象为页面片段服务
查看更多信息。您是否搜索了页面对象模型?那里有大量的参考资料。。。其中之一是,与其公开所有这些单独的元素,不如只公开一个
search(stringsearchstring)
方法,该方法获取搜索字符串,将其放入搜索框,然后单击“搜索用户”。这将清理/简化您的API。用户通常不需要访问单个元素,更像是用户在此页面上采取什么操作,并提供方法让他们完成这些操作。@JeffC:100%正确且同意,但我的想法是提供一个非常简单的演示,让用户知道类的结构在POM中是如何的,并且通过将常见的操作转换成一个方法来简化API总是好的。再次感谢您在我的回答下面提供有价值的评论,这将非常有意义。@uziii,如果上面给出的任何回答解决了您的问题,请回复。请将答案标记为已接受。
public class Simple_User_Flow {
private static WebDriver driver = null;
public static void main(String[] args) {
driver = new FirefoxDriver();
driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
driver.get("http://materials.springer.com/");
driver.manage().window().maximize();
Homepage.Generic_Search(driver).click();
Homepage.Generic_Search(driver).sendKeys("Mercury");
Homepage.Generic_Search_Submit(driver).click();
WebElement Search_Count = Homepage.Generic_Search_Count(driver);
String Count = Search_Count.getText();
System.out.println(Count + " Results found for your Search");
driver.close();
}
}