带有 IE webdriver 的 TestNG
TestNG with IE webdriver
嗨,我是 selenium 的新手,我试图将 TestNG 与 IE webdriver 一起使用,现在我无法直接在 class 下实例化 IE 驱动程序(不是主要方法)。当我这样做时,出现以下错误:
此行有多个标记
- 标记的语法错误,应该是 FormalParameter
- 标记语法错误,错误放置的结构
- 令牌“webdriver.ie.driver”的语法错误,无效
如果我然后使用带有@BeforeSuite 注释的方法,我需要将驱动程序传递给 class 中的每个其他测试方法。有没有办法让我可以通过这个传递驱动程序对象。
在下面找到我正在使用的示例代码:
package FirstTestNGPackage;
import java.io.File;
import org.openqa.selenium.By;
import org.openqa.selenium.Keys;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.ie.InternetExplorerDriver;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.testng.Assert;
import org.testng.annotations.AfterTest;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.BeforeSuite;
import org.testng.annotations.BeforeTest;
import org.testng.annotations.Test;
public class FirstTestNGclass {
@BeforeSuite
public void SetDriverPaths()
{
File IEDriver = new File("C:\Users\REDACTED\Desktop\SeleniumJars\IE Driver\IEDriverServerX64_2.44.0.exe");
System.setProperty("webdriver.ie.driver", IEDriver.getAbsolutePath());
WebDriver Driver = new InternetExplorerDriver();
}
@Test
public void tester()
{
Driver.findElement(By.id("keywordInput")).sendKeys("REDACTED");
Driver.findElement(By.id("keywordInput")).sendKeys(Keys.ENTER);
Assert.assertEquals(Driver.findElement(By.xpath(".//*[@id='search_results']/h1/span/strong")).getText(), "REDACTED");
}
@BeforeTest
public void RMSLogin()
{
Driver.navigate().to("REDACTED");
}
@AfterTest
public void closeBrowser()
{
Driver.quit();
}
}
像这样初始化你的 webdriver 然后你可以在 this.driver
的每个方法中使用它。
public class FirstTestNGclass {
public WebDriver driver;
@BeforeSuite
public void SetDriverPaths()
{
// ....
this.driver = new InternetExplorerDriver();
}
// ....
}
解决此问题的一个简单方法是为您的测试套件使用通用驱动程序 class...这样我们就可以在所有 classes
普通驱动class
public class Driver {
public static WebDriver driver=null;
public static WebDriver startdriver(String browser){
if(browser.equalsIgnoreCase("Chrome")){
System.setProperty("webdriver.chrome.driver", "path");
driver=new ChromeDriver();
}else if(browser.equals("IE")){
System.setProperty("webdriver.ie.driver", IEDriver.getAbsolutePath());
driver=new InternetExplorerDriver();
}
return driver;
}
}
您可以像这样创建驱动程序实例
Driver.startdriver("IE");
你可以像classname.instance
那样使用驱动对象
Driver.driver.findElement(By.xpath("path"));
希望这对您有所帮助...如果您有任何疑问,请回来
嗨,我是 selenium 的新手,我试图将 TestNG 与 IE webdriver 一起使用,现在我无法直接在 class 下实例化 IE 驱动程序(不是主要方法)。当我这样做时,出现以下错误: 此行有多个标记 - 标记的语法错误,应该是 FormalParameter - 标记语法错误,错误放置的结构 - 令牌“webdriver.ie.driver”的语法错误,无效
如果我然后使用带有@BeforeSuite 注释的方法,我需要将驱动程序传递给 class 中的每个其他测试方法。有没有办法让我可以通过这个传递驱动程序对象。
在下面找到我正在使用的示例代码:
package FirstTestNGPackage;
import java.io.File;
import org.openqa.selenium.By;
import org.openqa.selenium.Keys;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.ie.InternetExplorerDriver;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.testng.Assert;
import org.testng.annotations.AfterTest;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.BeforeSuite;
import org.testng.annotations.BeforeTest;
import org.testng.annotations.Test;
public class FirstTestNGclass {
@BeforeSuite
public void SetDriverPaths()
{
File IEDriver = new File("C:\Users\REDACTED\Desktop\SeleniumJars\IE Driver\IEDriverServerX64_2.44.0.exe");
System.setProperty("webdriver.ie.driver", IEDriver.getAbsolutePath());
WebDriver Driver = new InternetExplorerDriver();
}
@Test
public void tester()
{
Driver.findElement(By.id("keywordInput")).sendKeys("REDACTED");
Driver.findElement(By.id("keywordInput")).sendKeys(Keys.ENTER);
Assert.assertEquals(Driver.findElement(By.xpath(".//*[@id='search_results']/h1/span/strong")).getText(), "REDACTED");
}
@BeforeTest
public void RMSLogin()
{
Driver.navigate().to("REDACTED");
}
@AfterTest
public void closeBrowser()
{
Driver.quit();
}
}
像这样初始化你的 webdriver 然后你可以在 this.driver
的每个方法中使用它。
public class FirstTestNGclass {
public WebDriver driver;
@BeforeSuite
public void SetDriverPaths()
{
// ....
this.driver = new InternetExplorerDriver();
}
// ....
}
解决此问题的一个简单方法是为您的测试套件使用通用驱动程序 class...这样我们就可以在所有 classes
普通驱动class
public class Driver {
public static WebDriver driver=null;
public static WebDriver startdriver(String browser){
if(browser.equalsIgnoreCase("Chrome")){
System.setProperty("webdriver.chrome.driver", "path");
driver=new ChromeDriver();
}else if(browser.equals("IE")){
System.setProperty("webdriver.ie.driver", IEDriver.getAbsolutePath());
driver=new InternetExplorerDriver();
}
return driver;
}
}
您可以像这样创建驱动程序实例
Driver.startdriver("IE");
你可以像classname.instance
那样使用驱动对象Driver.driver.findElement(By.xpath("path"));
希望这对您有所帮助...如果您有任何疑问,请回来