---
title: Helium offers easy Web Testing and Automation
description: Use the Helium Framework for easy automated testing of websites and mobile
  apps. Helium is a tool that makes it easy to test websites and automate browsers.
source_url:
  html: https://testingbot.com/support/web-automate/selenium/python/helium
  md: https://testingbot.com/support/web-automate/selenium/python/helium.md
---

# Helium Automated Browser Testing

Helium is a tool that makes it easy to test websites and automate browsers.   
 It's designed to be very simple to use and integrate.   
 Helium can be used as a Java or Python library and integrates with the Selenium Framework.

## Setting up Helium

There's a very good tutorial on how to set up Helium on the [Helium Repository](https://github.com/mherrmann/selenium-python-helium) page.   
 Install Helium (it pulls in Selenium as a dependency):

```bash
pip install helium selenium
```

Once you've got everything set up, it's easy to run your first test with Helium on TestingBot:

## Running your first test

Below is an example on how to run a simple test on Firefox. When the test has finished, the test name and success state is sent to TestingBot so you can see the test success/failures in our dashboard.

To send the test success state back to us, please install our Python plugin:

```bash
pip install testingbotclient
```

**Python Example:**

```python
import unittest
from selenium import webdriver
from selenium.webdriver.firefox.options import Options
from helium import *
from testingbotclient import TestingBotClient

class HeliumOnTestingBot(unittest.TestCase):

  def setUp(self):
    options = Options()
    options.browser_version = 'latest'
    options.platform_name = 'WIN11'
    options.set_capability('tb:options', {
      'key': 'API_KEY',
      'secret': 'API_SECRET',
      'name': 'My First Test'
    })

    self.driver = webdriver.Remote(
      command_executor='https://hub.testingbot.com/wd/hub',
      options=options
    )
    set_driver(self.driver)

  def test_tb(self):
    go_to('https://testingbot.com')
    click('Log in')
    write('my@email.com', into='Email')
    write('myPassword', into='Password')
    click(Button('Sign in'))

  def tearDown(self):
    if hasattr(self._outcome, 'errors'):
        # Python <= 3.10
        result = self.defaultTestResult()
        self._feedErrorsToResult(result, self._outcome.errors)
        status = not (result.errors or result.failures)
    else:
        # Python 3.11+
        result = self._outcome.result
        status = all(test is not self for test, _ in result.errors + result.failures)
    session_id = self.driver.session_id
    self.driver.quit()
    tb_client = TestingBotClient('API_KEY', 'API_SECRET')
    tb_client.tests.update_test(session_id, name=self._testMethodName, passed=status)

if __name__ == ' __main__':
  unittest.main()
```

**Java Example:**

```java
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.firefox.FirefoxOptions;
import org.openqa.selenium.remote.RemoteWebDriver;
import java.net.URL;
import java.util.HashMap;
import static org.junit.Assert.assertEquals;
import static com.heliumhq.API.*;

public class WebDriverTest {

  private WebDriver driver;

  @Before
  public void setUp() throws Exception {
    FirefoxOptions options = new FirefoxOptions();
    options.setPlatformName("WIN11");
    options.setBrowserVersion("latest");

    HashMap<String, Object> tbOptions = new HashMap<>();
    tbOptions.put("key", "API_KEY");
    tbOptions.put("secret", "API_SECRET");
    tbOptions.put("name", "My First Test");
    options.setCapability("tb:options", tbOptions);

    this.driver = new RemoteWebDriver(
      new URL("https://hub.testingbot.com/wd/hub"),
      options);
    setDriver(this.driver);
  }

  @Test
  public void testWithTestingBot() throws Exception {
    goTo("https://testingbot.com");
    click("Log in");
    assertEquals("Online Selenium Testing - Log in to manage your unit tests.", getDriver().getTitle());
    write("user12345", into("Email:"));
    write("user12345", into("Password:"));
    click(Button("Sign in"));
  }

  @After
  public void tearDown() throws Exception {
    driver.quit();
  }
}
```

## Specify Browsers & Devices

To let TestingBot know on which browser/platform you want to run your test on, you need to specify the browsername, version, OS and other optional options in the capabilities field.

**Before**

```python
driver = webdriver.Firefox()
```

**After**

```python
from selenium.webdriver.firefox.options import Options

options = Options()
# set capabilities from picker below

driver = webdriver.Remote(
  command_executor='https://hub.testingbot.com/wd/hub',
  options=options)
```

  ![OS selected](https://testingbot.com/assets/environments/svg/windows11-0e1b28bc0fdd5034d3e4d3dc8d346c500a8c6522facf4b45d0da56537c1f1c6d.svg) Windows 11 › ![Browser Selected](https://testingbot.com/assets/environments/svg/chrome-c4081ff447d2d898d4afcb8f074a907c960e6f007716c1a1d119eee6803c4042.svg) Chrome 139 

Loading environments...

Please wait while we load the available browsers and platforms.

## More Information

More information regarding Helium is available on the [Helium Repository](https://github.com/mherrmann/selenium-python-helium).

## Other Python Framework examples

- [PyTest](https://testingbot.com/support/web-automate/selenium/python/pytest)

PyTest makes it easy to run Selenium tests with Python.

- [Behave](https://testingbot.com/support/web-automate/selenium/python/behave)

Behave is behaviour-driven development, Python style.

- [Lettuce](https://testingbot.com/support/web-automate/selenium/python/lettuce)

Lettuce is a Python BDD plugin based on Ruby's Cucumber, offering Gherkin stories.

- [PyUnit](https://testingbot.com/support/web-automate/selenium/python/pyunit)

PyUnit is the standard unit testing framework module for Python, described as a Python version of JUnit.

- [Helium](https://testingbot.com/support/web-automate/selenium/python/helium)

Helium is a tool that makes it easy to test websites and automate browsers.

- [Pylenium](https://testingbot.com/support/web-automate/selenium/python/pylenium)

Pylenium is a Python package, its mission: "Bring the best of Selenium, Cypress and Python into one package."

- [SeleniumBase](https://testingbot.com/support/web-automate/selenium/python/seleniumbase)

SeleniumBase is a Python package that simplifies Selenium testing.

## Looking for more help?

Have questions or need more information? Reach out via email or Slack.

[Email us](https://testingbot.com/contact/new) [Join our Slack](https://join.slack.com/t/testingb0t/shared_invite/zt-3bcw9xch-jk19~6XPs_xBrsAgAedkCw)
