【问题标题】:Selenium WebDriver Page object model descriptionSelenium WebDriver Page 对象模型说明
【发布时间】:2015-09-10 10:27:38
【问题描述】:

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

实际示例将非常有帮助。如果有人可以分享他们的示例项目,那将不胜感激。谢谢

【问题讨论】:

  • 你谷歌页面对象模型了吗?那里有很多参考资料...其中一个是on the selenium site

标签: java selenium-webdriver pageobjects


【解决方案1】:

您可以在此网址上关注我的回答: Automation Testing Framework

我试图用一种非常简单的方式来解释它。

也供您参考,您可以按照下面的 URL 进行相同的解释。 http://www.guru99.com/page-object-model-pom-page-factory-in-selenium-ultimate-guide.html

【讨论】:

  • @uziii,如果上面给出的任何答案解决了您的问题,请回复。请将答案标记为已接受。
【解决方案2】:

以下是如何使用 Java 和 Selenium 继续使用页面对象模型的小演示。

我创建了两个类。一个类将用于存储页面上的所有 Web 元素,而另一个类将用于访问该类的 Web 元素以执行预期的操作。

注意: Homepage 是为存储网络元素而创建的类。

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类将用于访问Homepage的web元素

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(); 
}
}

记住这是一个非常简单的演示,你可以添加多个类并在你的主类中使用它们。我们可以根据它们的功能或结构流程对类进行分组。

【讨论】:

  • 与其公开所有这些单独的元素,不如只公开一个search(String searchString) 方法,该方法接受搜索字符串,将其放入搜索框中,然后单击搜索用户。这将清理/简化您的 API。用户通常不需要访问单个元素,更像是用户将在此页面上执行的操作,并提供让他们完成这些操作的方法。
  • @JeffC : 100% 正确并同意,但我想给出一个非常简单明了的演示,让用户知道 POM 中类的结构,是的,简单一点总是好的通过将常用操作转换为一种方法的 API。再次感谢您在我的答案下方包含您的宝贵评论,这将是非常有意义的。
【解决方案3】:

页面对象是一种众所周知的设计模式,被自动化工程师广泛接受,它为应用程序的每个页面创建单独的类文件,以将所有元素分组为属性,并将它们的行为/业务功能分组为类的方法。但它在为页面创建类时几乎没有问题——尤其是当页面有更多/不同的元素集/复杂元素(如网格/日历小部件/HTML 表格等)时。

该类可能包含太多需要处理的职责。它应该被重组并分解成更小的类。即,遵循单一职责负责人。

在此处查看图片以了解想法。

也就是说,创建可重用的页面片段并让主页面对象为页面片段提供服务。

查看here了解更多信息。

【讨论】:

    猜你喜欢
    • 2012-06-30
    • 2021-09-07
    • 2013-08-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多