Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/305.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Selenium WebDriver页面对象模型描述_Java_Selenium Webdriver_Pageobjects - Fatal编程技术网

Java Selenium WebDriver页面对象模型描述

Java Selenium WebDriver页面对象模型描述,java,selenium-webdriver,pageobjects,Java,Selenium Webdriver,Pageobjects,我是selenium webdriver自动化的新手。我正在使用Java编程语言,并开始遵循页面对象模型。我想知道基本的文件结构,以及如何推进它 实际例子将非常有用。如果有人能分享他们的示例项目,那将是非常感谢的。感谢下面是一个小演示,演示如何使用Java和Selenium继续使用页面对象模型 我创建了两个类。一个类将用于存储页面上的所有web元素,另一个类将用于访问该类的web元素以执行预期操作 注意:主页是为存储web元素而创建的类 public class Homepage { p

我是selenium webdriver自动化的新手。我正在使用Java编程语言,并开始遵循页面对象模型。我想知道基本的文件结构,以及如何推进它


实际例子将非常有用。如果有人能分享他们的示例项目,那将是非常感谢的。感谢

下面是一个小演示,演示如何使用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(); 
}
}