为selenium webdriver创建用户定义的函数

时间:2014-11-11 07:43:48

标签: java selenium-webdriver user-defined-functions

我想为我的webdriver自动化代码创建一些用户定义的函数。我尝试过,但导致失败。

以下是我的代码

public class snapdeal {

    WebDriver driver= new FirefoxDriver();
    @Test
    public void test() {

             // I want open browser in function 1
        driver.get("http://amazon.in");
        driver.manage().window().maximize();

            // Function 2 for searching     
        driver.findElement(By.xpath("//li[@id='nav_cat_2'")).click();       
        driver.findElement(By.id("twotabsearchtextbox")).sendKeys("Shoes");
        driver.findElement(By.xpath("//input[@class='nav-submit-input']")).click();
        driver.findElement(By.xpath("//h2[@class='a-size-medium s-inline s-access-title a-text-normal' and contains(text(), \"Fbt Men's 8876 Casual Shoes\")]")).click();
               }
         }

如何在课堂上写两个函数?

3 个答案:

答案 0 :(得分:1)

你可能试图在 test()中嵌套方法。 It is not possible.

您可以在下面使用此代码调用 test()中的相应方法。它按预期工作:

public class snapdeal {

    static WebDriver driver= new FirefoxDriver();

    @Test
    public void test() {
        //Method1 for Opening Browser.
        openBrowser();
        // Method2 for searching     
        searchElement();
    }

    public static void openBrowser(){
        driver.get("http://amazon.in");
        driver.manage().window().maximize();
        driver.manage().timeouts().implicitlyWait(20, TimeUnit.SECONDS);
    }

    public static void searchElement(){

        driver.findElement(By.xpath("//li[@id='nav_cat_2']")).click(); 

        driver.findElement(By.id("twotabsearchtextbox")).sendKeys("Shoes");

        driver.findElement(By.xpath("//input[@class='nav-submit-input']")).click();

        driver.findElement(By.xpath("//h2[@class='a-size-medium s-inline s-access-title a-text-normal' and contains(text(), \"Fbt Men's 8876 Casual Shoes\")]")).click();
    }

}

答案 1 :(得分:0)

我认为这对你来说就像是Selenium的Hello World,你可以使用带有以下注释的Java在Java中使用已定义的方法here

但是根据规范,我们通常在@Before中使用Junit方法,在@BeforeTest中使用testng方法来设置网络驱动程序和AUT的网址,同样在您的导致错误的代码有两个xpaths错误,请在下面找到正确的工作代码并注释:

import java.util.concurrent.TimeUnit;
import org.junit.Before;
import org.junit.Test;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.safari.SafariDriver;

public class snapdeal {

    public WebDriver driver;

    @Before
    public void setUP()
    {
        // I want open browser in function 1
        driver= new SafariDriver();
        driver.manage().timeouts().implicitlyWait(20, TimeUnit.SECONDS);
        driver.get("http://amazon.in");
        driver.manage().window().maximize();
    }

    @Test
    public void test() {



        // Function 2 for searching     
        //driver.findElement(By.xpath("//li[@id='nav_cat_2")).click(); //element not needed      
        driver.findElement(By.id("twotabsearchtextbox")).sendKeys("Shoes");
        driver.findElement(By.xpath("//input[@class='nav-submit-input']")).click();
        driver.findElement(By.xpath("//*[@title=\"Fbt Men's 8876 Casual Shoes\"]//h2")).click();
    }
}

上面的代码可以正常工作。

答案 2 :(得分:0)

创建用户定义的函数有两个不同的范围

1)用一段代码创建函数,并在需要时调用该函数(上面已完成)

2)第二个方法是使用每个控件(如编辑框,单选按钮,复选框等)创建自定义函数,因此通过创建此函数,您可以使自动化框架更可行