1import ConfigParser
2import json
3import os
4import sys
5import unittest
6
7from network import get_lan_ip
8
9repo_root = os.path.abspath(os.path.join(__file__, "../.."))
10sys.path.insert(1, os.path.join(repo_root, "tools", "webdriver"))
11sys.path.insert(1, os.path.join(repo_root, "tools", "wptserve"))
12from wptserve import server
13from selenium import webdriver
14
15
16class WebDriverBaseTest(unittest.TestCase):
17    @classmethod
18    def setUpClass(cls):
19        cls.driver = create_driver()
20
21        cls.webserver = server.WebTestHttpd(host=get_lan_ip())
22        cls.webserver.start()
23        cls.webserver.where_is = cls.webserver.get_url
24
25    @classmethod
26    def tearDownClass(cls):
27        cls.webserver.stop()
28        if cls.driver:
29            cls.driver.quit()
30
31
32def create_driver():
33    config = ConfigParser.ConfigParser()
34    config.read('webdriver.cfg')
35    section = os.environ.get("WD_BROWSER", 'firefox')
36    if config.has_option(section, 'url'):
37        url = config.get(section, "url")
38    else:
39        url = 'http://127.0.0.1:4444/wd/hub'
40    capabilities = None
41    if config.has_option(section, 'capabilities'):
42        try:
43            capabilities = json.loads(config.get(section, "capabilities"))
44        except:
45            pass
46    mode = 'compatibility'
47    if config.has_option(section, 'mode'):
48        mode = config.get(section, 'mode')
49    if section == 'firefox':
50        driver = webdriver.Firefox()
51    elif section == 'chrome':
52        driver = webdriver.Chrome()
53    elif section == 'edge':
54        driver = webdriver.Remote()
55    elif section == 'ie':
56        driver = webdriver.Ie()
57    elif section == 'selendroid':
58        driver = webdriver.Android()
59
60    return driver
61