selenium运行相同的方法一次

时间:2012-04-30 12:38:52

标签: testing selenium automated-tests selenium-rc

几个星期前我开始服用硒。我用这种方式设计了我的测试

  1. 使用@BeforeClass我正在创建一个对象并调用一个打开浏览器并执行登录操作的类方法。
  2. 我有另一种方法,它具有我想要执行的测试操作的selenium代码,在我的情况下,边界值分析
  3. 现在我创建了一个@Test方法,该方法调用此前一个方法并将值传递给测试所需的值
  4. 我面临的问题是 1.浏览器启动并且登录操作加快,此后浏览器再次尝试打开主页。 2.我想知道这是否是编写selenium测试脚本的正确方法

    如果我删除步骤1并在步骤2中包含登录方法,我的测试运行正常 我在grails上的groovy上使用selenium-rc和STS

    一个类中的代码

    void candidatelogin() {
            selenium.open("/jeepnee/")
            selenium.click("link=Login")
            selenium.type("id=username", "csv_candidate4@trashmail.net")
            selenium.type("id=j_password", "kanishka1")
            selenium.click("id=submit")
            selenium.waitForPageToLoad("60000")
        }
    

    上面的部分我从下面的代码中调用

    class CandidateEditProfileInfoFunctionalTests extends GroovyTestCase{
    
    public String addressone="nejshdgfbvxczaqwer1y2io3lkjh7dg*lakiqwerjshag"
        @BeforeClass
        static void setUp() {
            GeneralTests candidate= new GeneralTests()
            candidate.candidatelogin()
        }
    
    
    void EditProfileInfoFail(String streeta, String streetb, String city, String state, String zip, String mobilecountry, String mobilearea, String mobilephone, String landlinecountry, String landlinearea, String landlinenumber) {
            selenium.waitForPageToLoad("60000")
            selenium.click("link=My Profile")
            selenium.waitForPageToLoad("80000")
            selenium.click("id=editProfile")
            selenium.waitForPageToLoad("80000")
            selenium.type("id=street1", streeta)
            selenium.type("id=street2", streetb)
            selenium.type("id=city", city)
            selenium.type("id=state", state)
            selenium.type("id=zip", zip)
            selenium.select("id=country", "label=Philippines")
            selenium.type("id=mobileCountryCode", mobilecountry)
            selenium.type("id=mobileAreaCode", mobilearea)
            selenium.type("id=mobilePhoneNumber", mobilephone)
            selenium.type("id=landlineCountryCode", landlinecountry)
            selenium.type("id=landlineAreaCode", landlinearea)
            selenium.type("id=landlinePhoneNumber", landlinenumber)
            selenium.click("id=submit")
            selenium.waitForPageToLoad("80000")
            assertTrue(selenium.isTextPresent("Please complete the required fields"))
            assertEquals("Candidate Creation - Step 2", selenium.getTitle())
        }
        @Test
        void homeCountryOnFailureShowsErrorMessage(){
            EditProfileInfoFail(addressone, "aaa", "bangalote", "karnataka", "1234", "11", "222", "12345", "11", "22", "5432")
    
        }
    }
    

1 个答案:

答案 0 :(得分:1)

你的@BeforeClass方法中是否有任何重复的逻辑?该方法运行一次,以设置所有测试方法所需的任何依赖项。听起来这个方法中的逻辑在步骤2中有些重复。似乎可以删除步骤2中打开主页的代码,因为它发生在@BeforeClass方法中。如果您的后续测试需要返回到HomePage,最好更改为@Before注释,然后在每次测试运行之前运行该代码。