Selenium Firefox 然后 Chrome 和 IE
Selenium Firefox then Chrome and IE
是否可以在 Firefox 上 运行 我的 Selenium 测试,然后在 Chrome 和 IE 上进行相同的测试?我该怎么做?
WebDriver是在上实现FirefoxDriver、ChromeDriver、InternetExplorerDriver的接口。这些特定于浏览器的驱动程序实现了 WebDriver 接口中定义的所有方法。作为用户,您仅使用 WebDriver 的方法(通过使用 WebDriver 对象调用它们)并且已被每个驱动程序如何实现这些方法所隐藏。因此,您无需担心该方法的每个实现。
但是您唯一需要指定的是:
到 运行 在 Firefox 浏览器上的测试:
WebDriver driver = new FirefoxDriver();
到 运行 在 Firefox 浏览器上的测试:
WebDriver driver = new ChromeDriver();
至 运行 互联网浏览器测试:
WebDriver driver = new InternetExplorerDriver();
同样,对于几乎所有浏览器,我们都有相应的驱动程序 类 可用。
除了语言 WebDriver 库,您还需要为每个浏览器下载 .exe 文件。
geckodriver.exe - firefox 48.0 and above (before 48 version, firefox has built-in support and no need of geckodriver.exe
chromedriver.exe - all chrome versions
InternetExplorerDriver.exe - all IE versions
一旦你下载了它们,你就可以让 selenium 知道这些可执行文件的保存位置:
System.setProperty("browser_key", "/path/to/the/driver")
example:
System.setProperty("webdriver.firefox.marionette","G:\Selenium\Firefox driver\geckodriver.exe"); // to set path to firefox driver, similary for chrome and IE browser.
remember key changes based on the browser.
或者,您可以将 .exe 保留在 PATH 环境变量中(在 Windows 中)或其他操作系统中的类似功能。
获得驱动程序实例后,您可以使用 WebDriver 接口上可用的所有方法。 (these are browser independent)
例如:
driver.get("http://www.google.com") // to lauch browser and visit google page
WebElement searchField = driver.findElement(By.id("SearchInput")) // to find an element in a page. returns a WebElement object.
searchField.sendKeys("search something") // to enter text into input field.
参考文献:
使用 Java,您可以自动处理所需的二进制文件(chromedriver、geckodriver 和 IEDriverServer.exe) 通过 WebDriverManager.
看一个作为参数化 JUnit 测试用例的完整示例。请注意,测试代码是单一的,在测试参数(方法 data()
)中,您选择了要 运行 您的代码的浏览器(Chrome、Firefox 和 Internet Explorer):
@RunWith(Parameterized.class)
public class MultipleBrowsersTest {
protected WebDriver driver;
@Parameter
public Class<? extends WebDriver> driverClass;
@Parameters(name = "{index}: {0}")
public static Collection<Object[]> data() {
return Arrays.asList(new Object[][] { { ChromeDriver.class }, { FirefoxDriver.class },
{ InternetExplorerDriver.class } });
}
@Before
public void setupTest() throws Exception {
WebDriverManager.getInstance(driverClass).setup();
driver = driverClass.newInstance();
}
@After
public void teardown() {
if (driver != null) {
driver.quit();
}
}
@Test
public void test() {
// Your test code here
}
}
我正在使用 nodeJS 以及我通过 foreach 完成它的方式。
const browsers = ['ie','firefox','chrome'];
browsers.forEach(function(item, index){
Tests(item,i);
});
function Tests(item, index) {
describe("This is a test", function() {});
}
然后我将项目放在浏览器名称应该在您的代码中的位置
是否可以在 Firefox 上 运行 我的 Selenium 测试,然后在 Chrome 和 IE 上进行相同的测试?我该怎么做?
WebDriver是在上实现FirefoxDriver、ChromeDriver、InternetExplorerDriver的接口。这些特定于浏览器的驱动程序实现了 WebDriver 接口中定义的所有方法。作为用户,您仅使用 WebDriver 的方法(通过使用 WebDriver 对象调用它们)并且已被每个驱动程序如何实现这些方法所隐藏。因此,您无需担心该方法的每个实现。
但是您唯一需要指定的是:
到 运行 在 Firefox 浏览器上的测试:
WebDriver driver = new FirefoxDriver();
到 运行 在 Firefox 浏览器上的测试:
WebDriver driver = new ChromeDriver();
至 运行 互联网浏览器测试:
WebDriver driver = new InternetExplorerDriver();
同样,对于几乎所有浏览器,我们都有相应的驱动程序 类 可用。
除了语言 WebDriver 库,您还需要为每个浏览器下载 .exe 文件。
geckodriver.exe - firefox 48.0 and above (before 48 version, firefox has built-in support and no need of geckodriver.exe
chromedriver.exe - all chrome versions
InternetExplorerDriver.exe - all IE versions
一旦你下载了它们,你就可以让 selenium 知道这些可执行文件的保存位置:
System.setProperty("browser_key", "/path/to/the/driver")
example:
System.setProperty("webdriver.firefox.marionette","G:\Selenium\Firefox driver\geckodriver.exe"); // to set path to firefox driver, similary for chrome and IE browser.
remember key changes based on the browser.
或者,您可以将 .exe 保留在 PATH 环境变量中(在 Windows 中)或其他操作系统中的类似功能。
获得驱动程序实例后,您可以使用 WebDriver 接口上可用的所有方法。 (these are browser independent)
例如:
driver.get("http://www.google.com") // to lauch browser and visit google page
WebElement searchField = driver.findElement(By.id("SearchInput")) // to find an element in a page. returns a WebElement object.
searchField.sendKeys("search something") // to enter text into input field.
参考文献:
使用 Java,您可以自动处理所需的二进制文件(chromedriver、geckodriver 和 IEDriverServer.exe) 通过 WebDriverManager.
看一个作为参数化 JUnit 测试用例的完整示例。请注意,测试代码是单一的,在测试参数(方法 data()
)中,您选择了要 运行 您的代码的浏览器(Chrome、Firefox 和 Internet Explorer):
@RunWith(Parameterized.class)
public class MultipleBrowsersTest {
protected WebDriver driver;
@Parameter
public Class<? extends WebDriver> driverClass;
@Parameters(name = "{index}: {0}")
public static Collection<Object[]> data() {
return Arrays.asList(new Object[][] { { ChromeDriver.class }, { FirefoxDriver.class },
{ InternetExplorerDriver.class } });
}
@Before
public void setupTest() throws Exception {
WebDriverManager.getInstance(driverClass).setup();
driver = driverClass.newInstance();
}
@After
public void teardown() {
if (driver != null) {
driver.quit();
}
}
@Test
public void test() {
// Your test code here
}
}
我正在使用 nodeJS 以及我通过 foreach 完成它的方式。
const browsers = ['ie','firefox','chrome'];
browsers.forEach(function(item, index){
Tests(item,i);
});
function Tests(item, index) {
describe("This is a test", function() {});
}
然后我将项目放在浏览器名称应该在您的代码中的位置