在 TestNG 测试用例中保留 system.property 的位置
where to keep system.property in TestNG test case
我应该在哪里添加以下语句
System.setProperty("webdriver.gecko.driver","//home//tuser//software//selenium//gecko_driver//geckodriver");
这样我的代码就不会产生错误
public class class1 {
public static String baseURL = "https://facebook.com/";
public WebDriver driver = new FirefoxDriver();
@Test(priority = 1)
public void login() throws InterruptedException {
driver.get(baseURL);
driver.manage().window().maximize();
driver.findElement(By.id("username")).sendKeys("srikanth");
driver.findElement(By.id("password")).sendKeys("sri");
driver.findElement(By.id("login_button")).click();
Thread.sleep(30000);
}
请参阅下面的代码段
public class class1 {
@Test(priority = 1)
public void login() throws InterruptedException {
String baseURL = "https://facebook.com/";
System.setProperty("webdriver.gecko.driver","C:\Selenium Training\Practice\Firefox driver\geckodriver.exe"); //Make sure to provide .exe extn
WebDriver driver = new FirefoxDriver();
driver.get(baseURL);
driver.manage().window().maximize();
driver.findElement(By.id("email")).sendKeys("srikanth");
driver.findElement(By.id("pass")).sendKeys("sri");
driver.findElement(By.id("u_0_n")).click();
Thread.sleep(30000);
}
}
public class class1 {
@Test
public void setup() throws InterruptedException
{
System.setProperty("webdriver.gecko.driver", "C:\geckodriver.exe");
driver = new FirefoxDriver();
driver.manage().timeouts().implicitlyWait(25, TimeUnit.SECONDS);
}
@Test(dependsOnMethods = {"setup"})
public void login() throws InterruptedException {
driver.get("https://facebook.com/");
Thread.sleep(2000);
driver.manage().window().maximize();
driver.findElement(By.id("username")).sendKeys("srikanth");
driver.findElement(By.id("password")).sendKeys("sri");
driver.findElement(By.id("login_button")).click();
Thread.sleep(5000);
}
}
我使用了 Jainish 提供的答案,但它对我不起作用。同样,我发现了以下解决方案:
public class class1 {
//public WebDriver object so that it can be used anywhere within class1
public WebDriver driver;
//public WebDriverWait object so that it can be used anywhere within class1
public WebDriverWait wait;
@BeforeClass
public void setup()
{
System.setProperty("webdriver.gecko.driver", "C:\geckodriver.exe");
driver = new FirefoxDriver();
wait = new WebDriverWait(driver,15); //explicit wait to increase performance
}
@Test()
public void login() {
driver.get("https://facebook.com/");
driver.manage().window().maximize();
wait.until(ExpectedConditions.visibilityOfElementLocated(By.id("username")));
driver.findElement(By.id("username")).sendKeys("srikanth");
driver.findElement(By.id("password")).sendKeys("sri");
driver.findElement(By.id("login_button")).click();
}
}
我修改了Jainish写的代码。
在修改后的代码中,您可以看到对象是在任何方法之外使用 public 范围声明的,因此,允许我们在 class1.
中的任何位置使用该对象
此外,无需同时使用静态等待(即Thread.sleep)和隐式等待。而是使用显式等待来提高脚本性能。
希望以上内容有用。如果我有任何错误,请告诉我。
我应该在哪里添加以下语句
System.setProperty("webdriver.gecko.driver","//home//tuser//software//selenium//gecko_driver//geckodriver");
这样我的代码就不会产生错误
public class class1 {
public static String baseURL = "https://facebook.com/";
public WebDriver driver = new FirefoxDriver();
@Test(priority = 1)
public void login() throws InterruptedException {
driver.get(baseURL);
driver.manage().window().maximize();
driver.findElement(By.id("username")).sendKeys("srikanth");
driver.findElement(By.id("password")).sendKeys("sri");
driver.findElement(By.id("login_button")).click();
Thread.sleep(30000);
}
请参阅下面的代码段
public class class1 {
@Test(priority = 1)
public void login() throws InterruptedException {
String baseURL = "https://facebook.com/";
System.setProperty("webdriver.gecko.driver","C:\Selenium Training\Practice\Firefox driver\geckodriver.exe"); //Make sure to provide .exe extn
WebDriver driver = new FirefoxDriver();
driver.get(baseURL);
driver.manage().window().maximize();
driver.findElement(By.id("email")).sendKeys("srikanth");
driver.findElement(By.id("pass")).sendKeys("sri");
driver.findElement(By.id("u_0_n")).click();
Thread.sleep(30000);
}
}
public class class1 {
@Test
public void setup() throws InterruptedException
{
System.setProperty("webdriver.gecko.driver", "C:\geckodriver.exe");
driver = new FirefoxDriver();
driver.manage().timeouts().implicitlyWait(25, TimeUnit.SECONDS);
}
@Test(dependsOnMethods = {"setup"})
public void login() throws InterruptedException {
driver.get("https://facebook.com/");
Thread.sleep(2000);
driver.manage().window().maximize();
driver.findElement(By.id("username")).sendKeys("srikanth");
driver.findElement(By.id("password")).sendKeys("sri");
driver.findElement(By.id("login_button")).click();
Thread.sleep(5000);
}
}
我使用了 Jainish 提供的答案,但它对我不起作用。同样,我发现了以下解决方案:
public class class1 {
//public WebDriver object so that it can be used anywhere within class1
public WebDriver driver;
//public WebDriverWait object so that it can be used anywhere within class1
public WebDriverWait wait;
@BeforeClass
public void setup()
{
System.setProperty("webdriver.gecko.driver", "C:\geckodriver.exe");
driver = new FirefoxDriver();
wait = new WebDriverWait(driver,15); //explicit wait to increase performance
}
@Test()
public void login() {
driver.get("https://facebook.com/");
driver.manage().window().maximize();
wait.until(ExpectedConditions.visibilityOfElementLocated(By.id("username")));
driver.findElement(By.id("username")).sendKeys("srikanth");
driver.findElement(By.id("password")).sendKeys("sri");
driver.findElement(By.id("login_button")).click();
}
}
我修改了Jainish写的代码。 在修改后的代码中,您可以看到对象是在任何方法之外使用 public 范围声明的,因此,允许我们在 class1.
中的任何位置使用该对象此外,无需同时使用静态等待(即Thread.sleep)和隐式等待。而是使用显式等待来提高脚本性能。
希望以上内容有用。如果我有任何错误,请告诉我。