Selenium Firefox然后是Chrome和IE

时间:2016-11-08 12:21:29

标签: selenium selenium-webdriver selenium-chromedriver selenium-firefoxdriver

是否可以在Firefox上运行我的Selenium测试,然后在Chrome和IE上运行相同的测试?我怎么能这样做?

4 个答案:

答案 0 :(得分:0)

WebDriver是一个实现FirefoxDriver,ChromeDriver,InternetExplorerDriver 的界面。这些特定于浏览器的驱动程序实现了WebDriver接口中定义的所有方法。作为用户,您只使用WebDriver的方法(通过使用WebDriver对象调用它们),并且已被每个驱动程序如何实现这些方法隐藏。所以,你不必担心方法的每个实现。

但您必须指定的唯一内容如下:

在Firefox浏览器上运行测试:

WebDriver driver = new FirefoxDriver();

在Firefox浏览器上运行测试:

WebDriver driver = new ChromeDriver();

在Internet浏览器上运行测试:

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.

参考文献:

  1. https://seleniumhq.github.io/selenium/docs/api/java/org/openqa/selenium/WebDriver.html
  2. https://seleniumhq.github.io/selenium/docs/api/java/org/openqa/selenium/firefox/FirefoxDriver.html

答案 1 :(得分:0)

使用Java,您可以通过{{3自动处理所需的二进制文件( chromedriver geckodriver IEDriverServer.exe ) }}

看一个完整的例子作为参数化的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
  }

}

答案 2 :(得分:0)

我正在使用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() {});

}

然后我将项目放在代码中的浏览器名称

答案 3 :(得分:0)

  

...然后在 Chrome 和IE

上进行相同的测试

Chrome - Chrome商店中提供了一个开源Selenium IDE for Chrome作为Kantu Browser Automation plus Selenium IDE

源代码在Gpl上根据gpl许可证。