【问题标题】:Selenium Firefox then Chrome and IESelenium Firefox,然后是 Chrome 和 IE
【发布时间】:2017-03-22 01:48:53
【问题描述】:

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

【问题讨论】:

  • 指定 selenium 版本、语言及其版本(如 java、python)和浏览器版本以获取特定答案。

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


【解决方案1】:

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

}

然后我将项目放置在您的代码中浏览器名称应位于的位置

【讨论】:

    【解决方案2】:

    使用 Java,您可以通过 WebDriverManager 自动处理所需的二进制文件(chromedrivergeckodriverIEDriverServer.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
      }
    
    }
    

    【讨论】:

      【解决方案3】:

      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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2013-03-08
        • 2015-02-19
        • 2017-07-20
        • 2012-04-26
        • 1970-01-01
        • 1970-01-01
        • 2012-06-16
        相关资源
        最近更新 更多