Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/selenium/4.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
SeleniumWebDriver项目(Java)的体系结构(如文件结构),易于维护且不使用任何构建工具_Java_Selenium_Selenium Webdriver_Open Source_Pageobjects - Fatal编程技术网

SeleniumWebDriver项目(Java)的体系结构(如文件结构),易于维护且不使用任何构建工具

SeleniumWebDriver项目(Java)的体系结构(如文件结构),易于维护且不使用任何构建工具,java,selenium,selenium-webdriver,open-source,pageobjects,Java,Selenium,Selenium Webdriver,Open Source,Pageobjects,谁能为易于维护的SeleniumWebDriver项目(Java)推荐最佳体系结构。虽然有一些设计模式,如页面对象等,但我想知道哪一种是最好的,即目前专业项目中使用的架构或框架 与以下项目类似: 自定义报告已完成 很容易处理定位器中的更改 不存在重复代码(与页面对象方法类似) 在检查或断言值或条件时遵循一些标准 我们学到的东西很少 1.使用页面对象删除特定于应用程序的冗余代码 设计时请记住,不必将每个页面映射到类,您可以在单个类上映射一组页面。如果页面提供的交互很少,请不要创建单独的类。 2.将

谁能为易于维护的SeleniumWebDriver项目(Java)推荐最佳体系结构。虽然有一些设计模式,如页面对象等,但我想知道哪一种是最好的,即目前专业项目中使用的架构或框架

与以下项目类似:

  • 自定义报告已完成
  • 很容易处理定位器中的更改
  • 不存在重复代码(与页面对象方法类似)
  • 在检查或断言值或条件时遵循一些标准

  • 我们学到的东西很少
    1.使用页面对象删除特定于应用程序的冗余代码
    设计时请记住,不必将每个页面映射到类,您可以在单个类上映射一组页面。如果页面提供的交互很少,请不要创建单独的类。
    2.将动态/变化的事物放在一边
    我们在属性文件中保留定位器(类型和值),以便以后可以更改它们

    并编写了查找元素的通用方法

      * Method to retrieve element
         * @param identifier to locate element
         * @param expression value
         * @return WebElement
         */
        public WebElement getElement(Identifier identifier, String expression) {
            By byElement = null;
            switch (identifier) {
            case xpath: {
                byElement = By.xpath(expression);
                break;
            }
            case id: {
                byElement = By.id(expression);
                break;
            }
            case name: {
                byElement = By.name(expression);
                break;
            }
            case classname: {
                byElement = By.className(expression);
                break;
            }
            case css: {
                byElement = By.cssSelector(expression);
                break;
            }
            case linktext: {
                byElement = By.linkText(expression);
                break;
            }
            case paritallinktext: {
                byElement = By.partialLinkText(expression);
                break;
            }
            case tagname: {
                byElement = By.tagName(expression);
                break;
            }
            }
            WebElement query = driver.findElement(byElement);
            return query;
        }
    
    三,。使用可重用方法减少特定于Selenium的冗余代码
    我们已经为频繁使用的Selenium任务编写了方法

     * Method to check if alert is present
         * @return True/False
         */
        public boolean isAlertPresent() {
            boolean isPresent = true;
            try {
                driver.switchTo().alert();
            } catch (NoAlertPresentException e) {
                isPresent = false;
            }
            return isPresent;
        }
    

    我们学到的东西很少
    1.使用页面对象删除特定于应用程序的冗余代码
    设计时请记住,不必将每个页面映射到类,您可以在单个类上映射一组页面。如果页面提供的交互很少,请不要创建单独的类。
    2.将动态/变化的事物放在一边
    我们在属性文件中保留定位器(类型和值),以便以后可以更改它们

    并编写了查找元素的通用方法

      * Method to retrieve element
         * @param identifier to locate element
         * @param expression value
         * @return WebElement
         */
        public WebElement getElement(Identifier identifier, String expression) {
            By byElement = null;
            switch (identifier) {
            case xpath: {
                byElement = By.xpath(expression);
                break;
            }
            case id: {
                byElement = By.id(expression);
                break;
            }
            case name: {
                byElement = By.name(expression);
                break;
            }
            case classname: {
                byElement = By.className(expression);
                break;
            }
            case css: {
                byElement = By.cssSelector(expression);
                break;
            }
            case linktext: {
                byElement = By.linkText(expression);
                break;
            }
            case paritallinktext: {
                byElement = By.partialLinkText(expression);
                break;
            }
            case tagname: {
                byElement = By.tagName(expression);
                break;
            }
            }
            WebElement query = driver.findElement(byElement);
            return query;
        }
    
    三,。使用可重用方法减少特定于Selenium的冗余代码
    我们已经为频繁使用的Selenium任务编写了方法

     * Method to check if alert is present
         * @return True/False
         */
        public boolean isAlertPresent() {
            boolean isPresent = true;
            try {
                driver.switchTo().alert();
            } catch (NoAlertPresentException e) {
                isPresent = false;
            }
            return isPresent;
        }
    

    有各种各样的框架,包括一些公司使用的项目,包括大联盟游戏。它有点简单,因为它是为像您这样想要定制解决方案的人设计的,但它具有当前的编程模式,如流畅性和内联验证。尽管这个项目特别不符合您对页面对象模式、自定义报告和构建工具的要求。同样,它应该是根据您的需要定制的。有各种各样的框架,包括一些公司使用的项目,包括大联盟游戏。它有点简单,因为它是为像您这样想要定制解决方案的人设计的,但它具有当前的编程模式,如流畅性和内联验证。尽管这个项目特别不符合您对页面对象模式、自定义报告和构建工具的要求。同样,它应该是根据您的需要定制的。