我想为我的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();
}
}
如何在课堂上写两个函数?
答案 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)第二个方法是使用每个控件(如编辑框,单选按钮,复选框等)创建自定义函数,因此通过创建此函数,您可以使自动化框架更可行