首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用POM在单个测试用例中运行两个不同的页面对象方法

如何使用POM在单个测试用例中运行两个不同的页面对象方法
EN

Stack Overflow用户
提问于 2015-06-09 12:28:15
回答 2查看 4.4K关注 0票数 2

我在我的中创建了一个POM模型,其中我有两个页面--一个是登录页面,另一个是用户页面。现在,我为登录页面编写了一个测试用例,它运行良好,当我试图运行第二个测试用例时,我需要首先登录才能到达需要单击查看页面的用户页面。

下面是我编写的代码,用于将两个不同的页面对象模型方法运行到一个测试用例中,目前它只运行登录方法,而不是用户页面方法。上面我附上了框架截图,下面是我编写的userstestcase代码:

它不允许我粘贴框架截图,请帮助我

代码语言:javascript
复制
package testCases;    
import java.util.concurrent.TimeUnit;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.testng.Assert;
import org.testng.annotations.BeforeTest;
import org.testng.annotations.Test;
import pageFactory.Userspage;
import pageFactory.loginPage;


    public class UsersTestCase {

        WebDriver driver;
        loginPage lpg;
        Userspage upg;


        @BeforeTest
        public void setup(){

            driver = new FirefoxDriver();    
            driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
            driver.get("someurl");

        }

        @Test(priority=0)

        public void test_login(){

            lpg = new loginPage(driver);
            String loginPageTitle = lpg.getLoginTitle(); 
            Assert.assertTrue(loginPageTitle.contains("Login")); 
            lpg.loginToGuru99("username", "password");
            driver.findElement(By.xpath("//a[@href='somelink']")).click();
        }      

        public void test_users(){
            upg = new Userspage(driver);  
            String usersPageTitle = upg.getLoginTitle(); 
            Assert.assertTrue(usersPageTitle.contains("Users"));   



    }
    }
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-06-12 05:54:38

上面的问题已经解决了--我做了什么来解决这个问题--我没有声明全局webdriver命令,然后使用这个命令,我没有将控件转移到用户页面,但是我已经重新创建了我的框架,现在一切都很好

票数 0
EN

Stack Overflow用户

发布于 2015-06-09 12:43:13

编辑:一个快速的解决方法是:

移动下面

代码语言:javascript
复制
lpg = new loginPage(driver);
upg = new Userspage(driver); 

到beforeTest步骤,就在下面:

代码语言:javascript
复制
driver.get("http://citysurfstaging.sourcefuse.com/admin/login");

在您的用户测试中,在进行其他任何操作之前,请调用下面的行:

代码语言:javascript
复制
lpg.loginToGuru99("saurabh.singh@sourcefuse.com", "sourcefuse123");
driver.findElement(By.xpath("//a[@href='http://citysurfstaging.sourcefuse.com/admin/users']")).click();

这应该会使你处于执行用户测试所需的状态.

快速的建议,如果你真的想做POM,那么你不应该在你的测试中映射元素,所有这些都应该在你的页面类中完成.

原件:

如果您有多个页面,并且需要它们之间的交互来执行端到端的测试,那么为什么不为POM创建另一个抽象层并有一个Flow类呢?

示例:在flow类的构造函数中,您实例化了执行流(loginpage,userpage)所需的页面,这将使您可以看到每个页面类的页面对象,然后在这些页面之间创建尽可能多的流(方法)。下一步是实例化测试中的流(与实例化页面的方式相同),并调用与任意多个页面交互的flow方法.如果这还不够清楚,我可以给出更详细的例子。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30732065

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档