Ejemplo n.º 1
0
    def __init__(self, profile=None, extensions=None, user_agent=None,
                 profile_preferences=None, fullscreen=False, wait_time=2):

        firefox_profile = FirefoxProfile(profile)
        firefox_profile.set_preference('extensions.logging.enabled', False)
        firefox_profile.set_preference('network.dns.disableIPv6', False)

        if user_agent is not None:
            firefox_profile.set_preference(
                'general.useragent.override', user_agent)

        if profile_preferences:
            for key, value in profile_preferences.items():
                firefox_profile.set_preference(key, value)

        if extensions:
            for extension in extensions:
                firefox_profile.add_extension(extension)

        self.driver = Firefox(firefox_profile)

        if fullscreen:
            ActionChains(self.driver).send_keys(Keys.F11).perform()

        self.element_class = WebDriverElement

        self._cookie_manager = CookieManager(self.driver)

        super(WebDriver, self).__init__(wait_time)
Ejemplo n.º 2
0
    def __init__(self, profile=None, extensions=None, user_agent=None, profile_preferences=None):
        self.old_popen = subprocess.Popen
        firefox_profile = FirefoxProfile(profile)
        firefox_profile.set_preference('extensions.logging.enabled', False)
        firefox_profile.set_preference('network.dns.disableIPv6', False)

        if user_agent is not None:
            firefox_profile.set_preference('general.useragent.override', user_agent)

        if profile_preferences:
            for key, value in profile_preferences.iteritems():
                firefox_profile.set_preference(key, value)

        if extensions:
            for extension in extensions:
                firefox_profile.add_extension(extension)

        self._patch_subprocess()
        self.driver = Firefox(firefox_profile)
        self._unpatch_subprocess()

        self.element_class = WebDriverElement

        self._cookie_manager = CookieManager(self.driver)

        super(WebDriver, self).__init__()
Ejemplo n.º 3
0
    def __init__(self,
                 profile=None,
                 extensions=None,
                 user_agent=None,
                 profile_preferences=None):
        self.old_popen = subprocess.Popen
        firefox_profile = FirefoxProfile(profile)
        firefox_profile.set_preference('extensions.logging.enabled', False)
        firefox_profile.set_preference('network.dns.disableIPv6', False)

        if user_agent is not None:
            firefox_profile.set_preference('general.useragent.override',
                                           user_agent)

        if profile_preferences:
            for key, value in profile_preferences.iteritems():
                firefox_profile.set_preference(key, value)

        if extensions:
            for extension in extensions:
                firefox_profile.add_extension(extension)

        self._patch_subprocess()
        self.driver = Firefox(firefox_profile)
        self._unpatch_subprocess()

        self.element_class = WebDriverElement

        self._cookie_manager = CookieManager(self.driver)

        super(WebDriver, self).__init__()
Ejemplo n.º 4
0
def create_fast_firefox_profile():
    quickjava_url = 'https://addons.mozilla.org/firefox/downloads/latest/1237/addon-1237-latest.xpi'
    if not os.path.isfile(get_file_name_from_url(quickjava_url)):
        # download the extension
        downloadFile(quickjava_url)
    ## get the Firefox profile object
    firefox_profile = FirefoxProfile()
    ## Disable CSS
    firefox_profile.set_preference('permissions.default.stylesheet', 2)
    ## Disable images
    firefox_profile.set_preference('permissions.default.image', 2)
    ## Disable Flash
    firefox_profile.set_preference('dom.ipc.plugins.enabled.libflashplayer.so',
                                   'false')

    firefox_profile.add_extension(get_file_name_from_url(quickjava_url))
    firefox_profile.set_preference(
        "thatoneguydotnet.QuickJava.curVersion",
        "2.0.6.1")  ## Prevents loading the 'thank you for installing screen'
    firefox_profile.set_preference(
        "thatoneguydotnet.QuickJava.startupStatus.Images",
        2)  ## Turns images off
    firefox_profile.set_preference(
        "thatoneguydotnet.QuickJava.startupStatus.AnimatedImage",
        2)  ## Turns animated images off
Ejemplo n.º 5
0
    def __init__(self,
                 profile=None,
                 extensions=None,
                 user_agent=None,
                 profile_preferences=None,
                 fullscreen=False,
                 wait_time=2):

        firefox_profile = FirefoxProfile(profile)
        firefox_profile.set_preference('extensions.logging.enabled', False)
        firefox_profile.set_preference('network.dns.disableIPv6', False)

        if user_agent is not None:
            firefox_profile.set_preference('general.useragent.override',
                                           user_agent)

        if profile_preferences:
            for key, value in profile_preferences.items():
                firefox_profile.set_preference(key, value)

        if extensions:
            for extension in extensions:
                firefox_profile.add_extension(extension)

        self.driver = Firefox(firefox_profile)

        if fullscreen:
            ActionChains(self.driver).send_keys(Keys.F11).perform()

        self.element_class = WebDriverElement

        self._cookie_manager = CookieManager(self.driver)

        super(WebDriver, self).__init__(wait_time)
Ejemplo n.º 6
0
def getDriver(httpProxy = '', type='Firefox'):
  if type == 'Firefox':
    proxy = Proxy({
      'proxyType': ProxyType.MANUAL,
      'httpProxy': httpProxy,
      'ftpProxy': httpProxy,
      'sslProxy': httpProxy,
      'noProxy': '' # set this value as desired
      })
    firefox_profile = FirefoxProfile()
    #firefox_profile.add_extension("firefox_extensions/adblock_plus-2.5.1-sm+tb+an+fx.xpi")
    firefox_profile.add_extension("firefox_extensions/webdriver_element_locator-1.rev312-fx.xpi")
    firefox_profile.set_preference("browser.download.folderList",2)
    firefox_profile.set_preference("webdriver.load.strategy", "unstable")
    #driver = webdriver.Firefox(firefox_profile = firefox_profile, proxy=proxy, firefox_binary=FirefoxBinary('/usr/bin/firefox'))
    #driver = webdriver.Firefox(firefox_profile = firefox_profile, proxy=proxy, firefox_binary=FirefoxBinary("/cygdrive/c/Program\ Files\ (x86)/Mozilla\ Firefox/firefox.exe"))
    driver = webdriver.Firefox(firefox_profile = firefox_profile, proxy=proxy)
  elif type == 'PhantomJS':  #  PhantomJS
    service_args = [
    '--proxy='+httpProxy,
    '--proxy-type=http',
    ]
    webdriver.DesiredCapabilities.PHANTOMJS['phantomjs.page.customHeaders.Accept'] = 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8'
    webdriver.DesiredCapabilities.PHANTOMJS['phantomjs.page.customHeaders.User-Agent'] = 'Mozilla/5.0 (X11; Windows x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/33.0.1750.117 Safari/537.36'
    driver = webdriver.PhantomJS(executable_path='windows/phantomjs.exe', service_args=service_args)
  else: # Chrome
    chrome_options = webdriver.ChromeOptions()
    #chrome_options.add_extension('firefox_extensions/adblockplus_1_7_4.crx')
    chrome_options.add_argument('--proxy-server=%s' % httpProxy)
    driver = webdriver.Chrome(executable_path='windows/chromedriver.exe', chrome_options=chrome_options)
  return driver
Ejemplo n.º 7
0
    def __init__(self,
                 profile=None,
                 extensions=None,
                 user_agent=None,
                 profile_preferences=None,
                 fullscreen=False,
                 wait_time=2,
                 timeout=90,
                 capabilities=None,
                 headless=False,
                 incognito=False,
                 **kwargs):

        firefox_profile = FirefoxProfile(profile)
        firefox_profile.set_preference("extensions.logging.enabled", False)
        firefox_profile.set_preference("network.dns.disableIPv6", False)

        firefox_capabilities = DesiredCapabilities().FIREFOX
        firefox_capabilities["marionette"] = True

        firefox_options = Options()

        if capabilities:
            for key, value in capabilities.items():
                firefox_capabilities[key] = value

        if user_agent is not None:
            firefox_profile.set_preference("general.useragent.override",
                                           user_agent)

        if profile_preferences:
            for key, value in profile_preferences.items():
                firefox_profile.set_preference(key, value)

        if extensions:
            for extension in extensions:
                firefox_profile.add_extension(extension)

        if headless:
            firefox_options.add_argument("--headless")

        if incognito:
            firefox_options.add_argument("-private")

        self.driver = Firefox(firefox_profile,
                              capabilities=firefox_capabilities,
                              options=firefox_options,
                              timeout=timeout,
                              **kwargs)

        if fullscreen:
            self.driver.fullscreen_window()

        self.element_class = WebDriverElement

        self._cookie_manager = CookieManager(self.driver)

        super(WebDriver, self).__init__(wait_time)
Ejemplo n.º 8
0
def get_driver():
    from selenium import webdriver
    from selenium.webdriver.firefox.firefox_profile import FirefoxProfile
    profile = FirefoxProfile()
    profile.add_extension(
        'C:/zz_EFG/GitHub/testscript/executables/firebug-2.0.16-fx.xpi')
    d = webdriver.Firefox(firefox_profile=profile)
    d.implicitly_wait(7)
    return d
Ejemplo n.º 9
0
    def __init__(self,
                 profile=None,
                 extensions=None,
                 user_agent=None,
                 profile_preferences=None,
                 fullscreen=False,
                 wait_time=2,
                 timeout=90,
                 capabilities=None,
                 headless=False,
                 **kwargs):

        firefox_profile = FirefoxProfile(profile)
        firefox_profile.set_preference('extensions.logging.enabled', False)
        firefox_profile.set_preference('network.dns.disableIPv6', False)

        firefox_capabilities = DesiredCapabilities().FIREFOX
        firefox_capabilities["marionette"] = True

        if capabilities:
            for key, value in capabilities.items():
                firefox_capabilities[key] = value

        if user_agent is not None:
            firefox_profile.set_preference('general.useragent.override',
                                           user_agent)

        if profile_preferences:
            for key, value in profile_preferences.items():
                firefox_profile.set_preference(key, value)

        if extensions:
            for extension in extensions:
                firefox_profile.add_extension(extension)

        if headless:
            os.environ.update({"MOZ_HEADLESS": '1'})
            binary = FirefoxBinary()
            binary.add_command_line_options('-headless')
            kwargs['firefox_binary'] = binary

        self.driver = Firefox(firefox_profile,
                              capabilities=firefox_capabilities,
                              timeout=timeout,
                              **kwargs)

        if fullscreen:
            ActionChains(self.driver).send_keys(Keys.F11).perform()

        self.element_class = WebDriverElement

        self._cookie_manager = CookieManager(self.driver)

        super(WebDriver, self).__init__(wait_time)
def process(appid):
    profile = FirefoxProfile()
    fireFoxOptions = webdriver.FirefoxOptions()
    # 静默模式
    fireFoxOptions.add_argument('--headless')
    fireFoxOptions.add_argument('--no-sandbox')
    fireFoxOptions.add_argument('--disable-gpu')
    fireFoxOptions.add_argument('--disable-dev-shm-usage')
    # 第二步:开启“手动设置代理”
    profile.set_preference('network.proxy.type', 1)
    # 第三步:设置代理IP
    # profile.set_preference('network.proxy.http', proxy[0])
    profile.set_preference('network.proxy.http', 'http-dyn.abuyun.com')
    # 第四步:设置代理端口,注意端口是int类型,不是字符串
    # profile.set_preference('network.proxy.http_port', int(proxy[1]))
    profile.set_preference('network.proxy.http_port', 9020)
    # 第五步:设置htpps协议也使用该代理
    profile.set_preference('network.proxy.ssl', 'http-dyn.abuyun.com')
    profile.set_preference('network.proxy.ssl_port', 9020)

    # Proxy auto login
    credentials = '{}:{}'.format('H64W55P7KS0C4Q7D', 'D03F3742C01C78A1')
    credentials = b64encode(bytes(credentials, encoding='utf-8'))
    profile.add_extension('/opt/install/close_proxy_authentication-1.1.xpi')
    # profile.add_extension('D:/download/close_proxy_authentication-1.1.xpi')
    # profile.set_preference('extensions.closeproxyauth.authtoken', credentials)
    profile.set_preference('extensions.closeproxyauth.authtoken', str(credentials, encoding='utf-8'))
    profile.set_preference('modifyheaders.config.active', True)
    profile.set_preference('modifyheaders.headers.count', 1)

    driver = webdriver.Firefox(firefox_profile=profile, firefox_options=fireFoxOptions)

    # base_url = 'view-source:https://api.qimai.cn/andapp/appinfo?analysis=%s&appid=%s'
    base_url = 'view-source:https://api.qimai.cn/andapp/appinfo?analysis=%s&appid=%s'
    analysis = get_analysis(appid, '/andapp/appinfo')
    real_url = base_url % (urllib.parse.quote(analysis), appid)
    try:
        logging.info('get appinfo')
        driver.get(real_url)
        content = driver.find_element_by_xpath('//pre').text
    except Exception:
        logging.error("%s : get appinfo error" % appid)
        raise Exception(appid)
    finally:
        driver.quit()

    result = json.loads(content, encoding='utf-8')
    if result['code'] != 10000:
        logging.error('req code is not 10000, result : %s' % content)
        raise Exception(appid)

    return content
Ejemplo n.º 11
0
    def __init__(self, profile=None, extensions=None, user_agent=None,
                 profile_preferences=None, fullscreen=False, wait_time=2,
                 timeout=90, capabilities=None, headless=False, **kwargs):

        firefox_profile = FirefoxProfile(profile)
        firefox_profile.set_preference('extensions.logging.enabled', False)
        firefox_profile.set_preference('network.dns.disableIPv6', False)

        firefox_capabilities = DesiredCapabilities().FIREFOX
        firefox_capabilities["marionette"] = True

        if 'accepted_languages' in kwargs:
            firefox_profile.set_preference('intl.accept_languages', kwargs['accepted_languages'])
            del kwargs['accepted_languages']

        if capabilities:
            for key, value in capabilities.items():
                firefox_capabilities[key] = value

        if user_agent is not None:
            firefox_profile.set_preference(
                'general.useragent.override', user_agent)

        if profile_preferences:
            for key, value in profile_preferences.items():
                firefox_profile.set_preference(key, value)

        if extensions:
            for extension in extensions:
                firefox_profile.add_extension(extension)

        if headless:
            os.environ.update({"MOZ_HEADLESS": '1'})
            binary = FirefoxBinary()
            binary.add_command_line_options('-headless')
            kwargs['firefox_binary'] = binary

        self.driver = Firefox(firefox_profile,
                              capabilities=firefox_capabilities,
                              timeout=timeout, **kwargs)

        if fullscreen:
            ActionChains(self.driver).send_keys(Keys.F11).perform()

        self.element_class = WebDriverElement

        self._cookie_manager = CookieManager(self.driver)

        super(WebDriver, self).__init__(wait_time)
Ejemplo n.º 12
0
    def __init__(self,
                 profile=None,
                 extensions=None,
                 user_agent=None,
                 profile_preferences=None,
                 fullscreen=False,
                 wait_time=2):

        firefox_profile = FirefoxProfile(profile)
        firefox_profile.set_preference('extensions.logging.enabled', False)
        firefox_profile.set_preference('network.dns.disableIPv6', False)

        firefox_profile.set_preference("browser.download.folderList", 2)
        firefox_profile.set_preference(
            "browser.download.manager.showWhenStarting", False)
        firefox_profile.set_preference("browser.download.dir", _DOWNLOAD_PATH)
        firefox_profile.set_preference(
            "browser.helperApps.neverAsk.saveToDisk", _ALL_MIME_TYPES)
        firefox_profile.set_preference("permissions.default.microphone", 1)
        firefox_profile.set_preference("permissions.default.camera", 1)
        # firefox_profile.set_preference("browser.helperApps.alwaysAsk.force", False)
        # firefox_profile.set_preference("browser.download.manager.showWhenStarting", False)

        if user_agent is not None:
            firefox_profile.set_preference('general.useragent.override',
                                           user_agent)

        if profile_preferences:
            for key, value in profile_preferences.items():
                firefox_profile.set_preference(key, value)

        if extensions:
            for extension in extensions:
                firefox_profile.add_extension(extension)

        self.driver = Firefox(firefox_profile)

        if fullscreen:
            ActionChains(self.driver).send_keys(Keys.F11).perform()

        self.element_class = WebDriverElement

        self._cookie_manager = CookieManager(self.driver)

        super(WebDriver, self).__init__(wait_time)
Ejemplo n.º 13
0
    def __init__(self, profile=None, extensions=None):
        self.old_popen = subprocess.Popen
        firefox_profile = FirefoxProfile(profile)
        firefox_profile.set_preference('extensions.logging.enabled', 'false')

        if extensions:
            for extension in extensions:
                firefox_profile.add_extension(extension)

        self._patch_subprocess()
        self.driver = Firefox(firefox_profile)
        self._unpatch_subprocess()

        self.element_class = WebDriverElement

        self._cookie_manager = CookieManager(self.driver)

        super(WebDriver, self).__init__()
Ejemplo n.º 14
0
    def __init__(self, default_wait_time=20, profile=None, extensions=None):
        self.old_popen = subprocess.Popen
        firefox_profile = FirefoxProfile(profile)
        firefox_profile.set_preference('extensions.logging.enabled', False)
        firefox_profile.set_preference('network.dns.disableIPv6', False)

        if extensions:
            for extension in extensions:
                firefox_profile.add_extension(extension)

        self._patch_subprocess()
        self.driver = Firefox(firefox_profile)
        self._unpatch_subprocess()

        self.element_class = WebDriverElement

        self._cookie_manager = CookieManager(self.driver)

        super(WebDriver, self).__init__(wait_time=default_wait_time)
Ejemplo n.º 15
0
    def __init__(self, profile=None, extensions=None):
        self.old_popen = subprocess.Popen
        firefox_profile = FirefoxProfile(profile)
        firefox_profile.set_preference('extensions.logging.enabled', False)
        firefox_profile.set_preference('network.dns.disableIPv6', False)

        if extensions:
            for extension in extensions:
                firefox_profile.add_extension(extension)

        self._patch_subprocess()
        self.driver = Firefox(firefox_profile)
        self._unpatch_subprocess()

        self.element_class = WebDriverElement

        self._cookie_manager = CookieManager(self.driver)

        super(WebDriver, self).__init__()
Ejemplo n.º 16
0
    def __init__(self, server, port=4443, profile=None, extensions=None):
        self.old_popen = subprocess.Popen
        firefox_profile = FirefoxProfile(profile)
        firefox_profile.set_preference('extensions.logging.enabled', False)
        firefox_profile.set_preference('network.dns.disableIPv6', False)

        if extensions:
            for extension in extensions:
                firefox_profile.add_extension(extension)

        self._patch_subprocess()
        dest = 'http://%s:%s/wd/hub'%(server,port)
        self.driver = Remote(dest, {}, firefox_profile)
        self._unpatch_subprocess()

        self.element_class = WebDriverElement

        self._cookie_manager = CookieManager(self.driver)

        super(WebDriver, self).__init__()
Ejemplo n.º 17
0
    def __init__(self, profile=None, extensions=None, user_agent=None,
                 profile_preferences=None, fullscreen=False, wait_time=2,
                 timeout=90, capabilities=None, log_path=None):

        firefox_profile = FirefoxProfile(profile)
        firefox_profile.set_preference('extensions.logging.enabled', False)
        firefox_profile.set_preference('network.dns.disableIPv6', False)

        firefox_capabilities = DesiredCapabilities().FIREFOX
        firefox_capabilities["marionette"] = True

        if capabilities:
            for key, value in capabilities.items():
                firefox_capabilities[key] = value

        if user_agent is not None:
            firefox_profile.set_preference(
                'general.useragent.override', user_agent)

        if profile_preferences:
            for key, value in profile_preferences.items():
                firefox_profile.set_preference(key, value)

        if extensions:
            for extension in extensions:
                firefox_profile.add_extension(extension)

        log_path = log_path if log_path is not None else os.devnull
        self.driver = Firefox(firefox_profile,
                              capabilities=firefox_capabilities,
                              timeout=timeout,
                              log_path=log_path)

        if fullscreen:
            ActionChains(self.driver).send_keys(Keys.F11).perform()

        self.element_class = WebDriverElement

        self._cookie_manager = CookieManager(self.driver)

        super(WebDriver, self).__init__(wait_time)
Ejemplo n.º 18
0
def _init_webdriver():
    # get the Firefox profile object
    fp = FirefoxProfile()

    # Disable CSS
    fp.set_preference('permissions.default.stylesheet', 2)

    # Disable images
    fp.set_preference('permissions.default.image', 2)

    # Disable Flash
    fp.set_preference('dom.ipc.plugins.enabled.libflashplayer.so',
                               'false')

    # Block Pop ups
    fp.set_preference('browser.popups.showPopupBlocker', 'true')

    # Install ad block plus
    fp.add_extension("adblockplusfirefox.xpi")

    # Set the modified profile while creating the browser object
    return webdriver.Firefox(fp)
Ejemplo n.º 19
0
 def __init__(
     self, profile=None, extensions=None, user_agent=None, profile_preferences=None, wait_time=2, firefox_path=None
 ):
     firefox_profile = FirefoxProfile(profile)
     firefox_profile.set_preference("extensions.logging.enabled", False)
     firefox_profile.set_preference("network.dns.disableIPv6", False)
     if user_agent is not None:
         firefox_profile.set_preference("general.useragent.override", user_agent)
     if profile_preferences:
         for key, value in profile_preferences.items():
             firefox_profile.set_preference(key, value)
     if extensions:
         for extension in extensions:
             firefox_profile.add_extension(extension)
     if firefox_path:
         firefox_binary = FirefoxBinary(firefox_path=firefox_path)
         self.driver = Firefox(firefox_profile=firefox_profile, firefox_binary=firefox_binary)
     else:
         self.driver = Firefox(firefox_profile)
     self.element_class = WebDriverElement
     self._cookie_manager = CookieManager(self.driver)
     super(WebDriver, self).__init__(wait_time)
Ejemplo n.º 20
0
    def __init__(self, profile=None, extensions=None, user_agent=None, profile_preferences=None, wait_time=2):
        firefox_profile = FirefoxProfile(profile)
        firefox_profile.set_preference('extensions.logging.enabled', False)
        firefox_profile.set_preference('network.dns.disableIPv6', False)

        if user_agent is not None:
            firefox_profile.set_preference('general.useragent.override', user_agent)

        if profile_preferences:
            for key, value in profile_preferences.iteritems():
                firefox_profile.set_preference(key, value)

        if extensions:
            for extension in extensions:
                firefox_profile.add_extension(extension)
        firefox_profile.profile_dir=firefox_profile.profile_dir.encode('ascii','ignore')
        self.driver = Firefox(firefox_profile)

        self.element_class = WebDriverElement

        self._cookie_manager = CookieManager(self.driver)

        super(WebDriver, self).__init__(wait_time)
Ejemplo n.º 21
0
 def __init__(self, profile=None, extensions=None, user_agent=None,
              profile_preferences=None, wait_time=2, firefox_path=None):
     firefox_profile = FirefoxProfile(profile)
     firefox_profile.set_preference('extensions.logging.enabled', False)
     firefox_profile.set_preference('network.dns.disableIPv6', False)
     if user_agent is not None:
         firefox_profile.set_preference('general.useragent.override',
                                        user_agent)
     if profile_preferences:
         for key, value in profile_preferences.items():
             firefox_profile.set_preference(key, value)
     if extensions:
         for extension in extensions:
             firefox_profile.add_extension(extension)
     if firefox_path:
         firefox_binary = FirefoxBinary(firefox_path=firefox_path)
         self.driver = Firefox(firefox_profile=firefox_profile,
                               firefox_binary=firefox_binary)
     else:
         self.driver = Firefox(firefox_profile)
     self.element_class = WebDriverElement
     self._cookie_manager = CookieManager(self.driver)
     super(WebDriver, self).__init__(wait_time)
Ejemplo n.º 22
0
    def __init__(self, profile=None, extensions=None, user_agent=None,
                 profile_preferences=None, fullscreen=False, wait_time=2):

        firefox_profile = FirefoxProfile(profile)
        firefox_profile.set_preference('extensions.logging.enabled', False)
        firefox_profile.set_preference('network.dns.disableIPv6', False)

        firefox_profile.set_preference("browser.download.folderList", 2)
        firefox_profile.set_preference("browser.download.manager.showWhenStarting", False)
        firefox_profile.set_preference("browser.download.dir", _DOWNLOAD_PATH)
        firefox_profile.set_preference("browser.helperApps.neverAsk.saveToDisk", _ALL_MIME_TYPES)
        # firefox_profile.set_preference("browser.helperApps.alwaysAsk.force", False)
        # firefox_profile.set_preference("browser.download.manager.showWhenStarting", False)

        if user_agent is not None:
            firefox_profile.set_preference(
                'general.useragent.override', user_agent)

        if profile_preferences:
            for key, value in profile_preferences.items():
                firefox_profile.set_preference(key, value)

        if extensions:
            for extension in extensions:
                firefox_profile.add_extension(extension)

        self.driver = Firefox(firefox_profile)

        if fullscreen:
            ActionChains(self.driver).send_keys(Keys.F11).perform()

        self.element_class = WebDriverElement

        self._cookie_manager = CookieManager(self.driver)

        super(WebDriver, self).__init__(wait_time)
Ejemplo n.º 23
0
    def create_browser(self, account_id):
        self.account = ProxifierAccount.objects.get(id=account_id)
        account = self.account

        final_profile = 'Proxifier\default_profile'
        # account.profile_file = final_profile
        profile = FirefoxProfile(final_profile)

        # For linux
        # default_profile = 'Proxifier/profiles/DEFAULT'
        # For windows
        # default_profile = 'Proxifier\default_profile'

        # final_profile = id_generator()
        # shutil.copy(os.path.join(default_profile), os.path.join('Proxifier/profiles/', final_profile))
        # copy_tree(os.path.join(default_profile), os.path.join('Proxifier/profiles/', final_profile))
        # account.profile_file = final_profile

        # Create profile if it doesn't exist
        # if account.profile_file == "":
        #     profile = FirefoxProfile()
        #
        #     # For linux
        #     # default_profile = 'Proxifier/profiles/DEFAULT'
        #     # For windows
        #     default_profile = 'C:\Users\Volk\AppData\Roaming\Mozilla\Firefox\Profiles'
        #
        #
        #     final_profile = id_generator()
        #     # shutil.copy(os.path.join(default_profile), os.path.join('Proxifier/profiles/', final_profile))
        #     copy_tree(os.path.join(default_profile), os.path.join('Proxifier/profiles/', final_profile))
        #     account.profile_file = final_profile
        #     account.save()
        # else:
        #     profile_file = os.path.join('Proxifier/profiles/', account.profile_file)
        #     profile = FirefoxProfile(profile_file)

        # Set download dir
        profile.set_preference("browser.download.folderList", 2)
        profile.set_preference("browser.download.manager.showWhenStarting",
                               False)
        profile.set_preference("browser.download.dir", "/proxifier")
        profile.set_preference("browser.helperApps.neverAsk.saveToDisk",
                               "image/jpeg")

        # Set user agent
        profile.set_preference("general.useragent.override",
                               account.user_agent)
        print("User agent: %s" % account.user_agent)

        # Add plugins:
        if account.plugin_list != "":
            for p in account.plugin_list.split(','):
                profile.add_extension(extension="Proxifier/plugins/%s.xpi" % p)

        # --------- #
        # Set proxy
        # proxyHost = "173.232.14.3"
        # proxyPort = "3128"
        # profile.set_preference("network.proxy.type", 1)
        # profile.set_preference('network.proxy.socks', proxyHost)
        # profile.set_preference('network.proxy.socks_port', proxyPort)
        # profile.set_preference('signon.autologin.proxy', True)
        # profile.set_preference('network.websocket.enabled', False)
        # profile.update_preferences()

        # Setting up profile, now raise browser
        # firefox_capabilities = DesiredCapabilities.FIREFOX
        # firefox_capabilities['marionette'] = True
        # firefox_capabilities['binary'] = 'C:' + os.path.sep + 'Program Files' + os.path.sep + 'Mozilla Firefox' + \
        #                                  os.path.sep + 'firefox.exe'

        # self.driver = webdriver.Firefox(firefox_profile=profile, capabilities=firefox_capabilities)
        self.driver = webdriver.Firefox(firefox_profile=profile)
        pickle.dump(self.driver.get_cookies(), open("cookies.pkl", "wb"))

        # Set screen size
        self.driver.set_window_position(0, 0)
        self.driver.set_window_size(account.screen_width,
                                    account.screen_height)
        print "%s x %s" % (account.screen_width, account.screen_height)

        # load cookies
        cookies = pickle.load(open("cookies.pkl", "rb"))
        for cookie in cookies:
            self.driver.add_cookie(cookie)
            print cookie

        return self.driver
Ejemplo n.º 24
0
    print("~  CTRL+C  to stop                    ")
    print("~                                     ")

    printEnviroment()

    chrome_options = Options()
    #chrome_options.add_argument("--headless")
    #chrome_options.add_argument("--window-size=1024x1400")
    chrome_options.add_argument('--user-data-dir=' + os.path.join(origin_path, 'FireFox_User_Data'))

    # download Chrome Webdriver  
    # https://sites.google.com/a/chromium.org/chromedriver/download
    # put driver executable file in the script directory
    chrome_driver = os.path.join(path_to_modules, 'geckodriver')

    firefox_profile = FirefoxProfile()
    firefox_profile.add_extension(os.path.join(path_to_modules, 'Ignore-x.zip'))

    driver = webdriver.Firefox(firefox_options=chrome_options, firefox_profile=firefox_profile, executable_path=chrome_driver)

    driver.get("http://web.whatsapp.com")

    input('Press <ENTER> to stop server')

    driver.close()
    sys.exit(0)

except KeyboardInterrupt:
    print('\nProgram stoped...')
    sys.exit(0)
Ejemplo n.º 25
0
def run_tests(firefox_path=None):
    basedir = os.path.dirname(__file__)
    driver = None
    profile = FirefoxProfile()
    if firefox_path:
        if sys.platform == "darwin" and os.path.isdir(firefox_path):
            firefox_path = os.path.join(firefox_path, "Contents", "MacOS",
                                        "firefox")
        binary = FirefoxBinary(firefox_path)
    else:
        binary = None

    try:
        build1 = tempfile.NamedTemporaryFile(mode="wb",
                                             suffix=".xpi",
                                             delete=False)
        build2 = tempfile.NamedTemporaryFile(mode="wb",
                                             suffix=".xpi",
                                             delete=False)
        try:
            createBuild(basedir, type="gecko", outFile=build1)
            createBuild(os.path.join(basedir, "testhelper"),
                        type="gecko",
                        outFile=build2)
            profile.add_extension(build1.name)
            profile.add_extension(build2.name)
        finally:
            os.unlink(build1.name)
            os.unlink(build2.name)

        driver = WebDriver(profile, firefox_binary=binary)
        driver.wait_until = lambda method: WebDriverWait(
            driver, default_timeout).until(lambda d: method())
        driver.accept_alert = Alert(driver).accept
        driver.keys = Keys

        def chain(*actions):
            for action in actions:
                c = ActionChains(driver)
                action(c)
                c.perform()

        driver.chain = chain

        max_timestamp = {"value": 0}

        def get_urls():
            result = []
            prefix = "[testhelper] Loading: "
            new_timestamp = max_timestamp["value"]
            for item in driver.get_log("browser"):
                timestamp = item["timestamp"]
                if timestamp <= max_timestamp["value"] or not item[
                        "message"].startswith(prefix):
                    continue
                if timestamp > new_timestamp:
                    new_timestamp = timestamp
                result.append(item["message"][len(prefix):])
            max_timestamp["value"] = new_timestamp
            return result

        driver.get_urls = get_urls

        def close_background_tabs():
            driver.execute_script('''
        var event = document.createEvent("Events");
        event.initEvent("testhelper_closeBackgroundTabs", true, false);
        document.dispatchEvent(event);
      ''')

        driver.close_background_tabs = close_background_tabs

        def middle_click(self):
            driver.execute_script(
                '''
        var event = document.createEvent("Events");
        event.initEvent("testhelper_middleclick", true, false);
        arguments[0].dispatchEvent(event);
      ''', self)

        WebElement.middle_click = middle_click

        environment = {
            "__builtins__": __builtins__,
            "driver": driver,
        }

        testdir = os.path.join(basedir, "tests")
        for filename in os.listdir(testdir):
            if filename.startswith(".") or not filename.endswith(".py"):
                continue
            filepath = os.path.join(testdir, filename)
            environment["__file__"] = filepath
            with open(filepath, "rb") as handle:
                exec handle in environment
    finally:
        if driver:
            driver.quit()
        shutil.rmtree(profile.path, ignore_errors=True)
Ejemplo n.º 26
0
def getWebDriver(browser_name, proxy=False, implicit_wait_seconds=0, verbose=False):
    logger.info('getWebDriver -> "getWebDriver" procedure started...')
    logger.debug('getWebDriver -> Parameters: ')
    logger.debug('getWebDriver -> \t"browser_name": ' + browser_name)
    logger.debug('getWebDriver -> \t"proxy": ' + str(proxy))
    logger.debug('getWebDriver -> \t"inplicit_wait_second": ' + str(implicit_wait_seconds))

    proxy_host = 'localhost:9100'
    if proxy:
        logger.debug('getWebDriver -> \t"proxy_host": ' + proxy_host)
    os_name = platform.system()
    logger.debug('getWebDriver -> \t"Platform": ' + os_name)

    try:
        if proxy:
            if browser_name == "Chrome":
                caps = DesiredCapabilities.CHROME
            elif browser_name == "IE":
                caps = DesiredCapabilities.INTERNETEXPLORER
                caps['ignoreProtectedModeSettings'] = True
            else:
                caps = DesiredCapabilities.FIREFOX

            caps['proxy'] = {"httpProxy": proxy_host,
                             "ftpProxy": proxy_host,
                             "sslProxy": proxy_host,
                             "noProxy": None,
                             "proxyType": "MANUAL",
                             "class": "org.openqa.selenium.Proxy",
                             "autodetect": False}

            if browser_name == 'Chrome':
                driver = webdriver.Chrome(config_browsers[browser_name][os_name], capabilities=caps)
            elif browser_name == 'IE':
                if os_name != "Darwin":
                    # driver = webdriver.Remote(command_executor='http://10.211.55.4:4444/wd/hub', desired_capabilities=caps)
                    # else:
                    driver = webdriver.Ie(config_browsers[browser_name][os_name], capabilities=caps)

            else:
                driver = webdriver.Firefox(capabilities=caps)
        else:
            if browser_name == 'Chrome':
                print(os_name)
                driver = webdriver.Chrome(config_browsers[browser_name][os_name])
            elif browser_name == 'IE' and os_name != "Darwin":
                caps = DesiredCapabilities.INTERNETEXPLORER
                caps['ignoreProtectedModeSettings'] = True
                #if os_name != "Darwin":
                    # driver = webdriver.Remote(command_executor='http://10.211.55.4:4444/wd/hub', desired_capabilities=caps)
                    # else:
                driver = webdriver.Ie(config_browsers[browser_name][os_name], capabilities=caps)
            else:
                browser_name = 'Firefox'
                profile = FirefoxProfile()
                profile.add_extension(config_browsers[browser_name]['extension_path'][os_name] + 'firebug-2.0.16-fx.xpi')
                driver = webdriver.Firefox(firefox_profile=profile)

        #driver.maximize_window()
        driver.implicitly_wait(implicit_wait_seconds)
        logger.info('getWebDriver -> Driver was created successfully')
        return driver

    except Exception as e:
        logger.error('getWebDriver -> Unknown exception. More details: ' + repr(e))
        raise BrowserException(repr(e))
Ejemplo n.º 27
0
    def launch_browser(self, request=None):
        request = request or self.request
        if isinstance(request, str):
            request = {'browser': request}
            try:
                self.request.update(request)
                request = self.request
            except AttributeError:
                self.request = request
        if 'browser' in request:
            capabilities_map = {
                "Firefox": DesiredCapabilities.FIREFOX,
                "IExplorer": DesiredCapabilities.INTERNETEXPLORER,
                "Chrome": DesiredCapabilities.CHROME,
                "PhantomJS": DesiredCapabilities.PHANTOMJS,
                "Safari": DesiredCapabilities.SAFARI,
            }
            caps = capabilities_map[request['browser']]

            ############################################
            ### Firefox
            ############################################
            if request['browser'] == 'Firefox':
                firefox_profile = FirefoxProfile()
                if 'firefox' in request:
                    if 'preferences' in request['firefox']:
                        for preference in request['firefox']['preferences']:
                            firefox_profile.set_preference(*preference)
                    if 'extensions' in request['firefox']:
                        for extension in request['firefox']['extensions']:
                            extension = PurePath(
                                request['firefox']['extensions_path'],
                                extension)
                            firefox_profile.add_extension(str(extension))
                    if 'mime' in request['firefox']:
                        import shutil
                        shutil.copy2(request['firefox']['mime'],
                                     firefox_profile.profile_dir)
                    if 'capabilities' in request['firefox']:
                        caps.update(request['firefox']['capabilities'])
                selenium_proxy = self.setup_proxy()

                class Mixin(Firefox, browser.BrowsingActions):
                    pass

                self.browser = Mixin(firefox_profile,
                                     proxy=selenium_proxy,
                                     capabilities=caps)

            ############################################
            ### Internet Explorer
            ############################################
            elif request['browser'] == 'IExplorer':
                # Not a good idea => caps['nativeEvents'] = False
                iedriver_server = os.path.join(
                    request['iexplorer']['server_path'],
                    request['iexplorer']['server_file'])

                class Mixin(Ie, browser.BrowsingActions):
                    pass

                self.browser = Mixin(iedriver_server, capabilities=caps)

            ############################################
            ### GhostDriver, PhantomJS
            ############################################
            elif request['browser'] == 'PhantomJS':
                service_args = ["--ignore-ssl-errors=yes"]
                caps['phantomjs.page.settings.userAgent'] = (
                    'Mozilla/5.0 (Windows NT'
                    ' 6.1; Win64; x64; rv:16.0) Gecko/20121026 Firefox/16.0')

                class Mixin(PhantomJS, browser.BrowsingActions):
                    pass

                self.browser = Mixin(service_args=service_args,
                                     desired_capabilities=caps)
                # If you don't do this, you'll get the pain:
                # https://github.com/angular/protractor/issues/585
                self.browser.set_window_size(1024, 768)

            ############################################
            ### Chrome
            ############################################
            elif request['browser'] == 'Chrome':
                chromedriver_server = os.path.join(
                    request['chrome']['server_path'],
                    request['chrome']['server_file'])
                os.environ["webdriver.chrome.driver"] = chromedriver_server

                class Mixin(Chrome, browser.BrowsingActions):
                    pass

                self.browser = Mixin(chromedriver_server)

            ############################################
            ### Safari
            ############################################
            elif request['browser'] == 'Safari':
                selenium_server = os.path.join(
                    request['safari']['server_path'],
                    request['safari']['server_file'])

                class Mixin(Safari, browser.BrowsingActions):
                    pass

                self.browser = Mixin(selenium_server)
            return self.browser

        print("Please specify which browser to launch.")
        assert 'browser' in request
Ejemplo n.º 28
0
from selenium.webdriver.firefox.firefox_profile import FirefoxProfile

# Define some colors
BLACK = (0, 0, 0)
GREY = (127, 127, 127)
WHITE = (255, 255, 255)
GREEN = (0, 100, 0)
RED = (255, 0, 0)
BLUE = (0, 0, 255)

questions = []

f = codecs.open(sys.argv[1], 'r', 'utf-8')

chop = FirefoxProfile()
chop.add_extension('ublock.xpi')

dr = webdriver.Firefox(firefox_profile=chop)

for line in f:
    q = []
    b = []
    both = line.split(" //")
    for i, w in enumerate(both[0].split()):
        if w[-1] == '!':
            b.append(i)
            q.append(w[0:-1])
        else:
            q.append(w)

    questions.append((q, b, both[1]))
Ejemplo n.º 29
0
    def __init__(
        self,
        profile=None,
        extensions=None,
        user_agent=None,
        profile_preferences=None,
        fullscreen=False,
        wait_time=2,
        timeout=90,
        capabilities=None,
        headless=False,
        incognito=False,
        **kwargs
    ):

        firefox_profile = FirefoxProfile(profile)
        firefox_profile.set_preference("extensions.logging.enabled", False)
        firefox_profile.set_preference("network.dns.disableIPv6", False)

        firefox_capabilities = DesiredCapabilities().FIREFOX
        firefox_capabilities["marionette"] = True

        firefox_options = Options()

        if capabilities:
            for key, value in capabilities.items():
                firefox_capabilities[key] = value

        if user_agent is not None:
            firefox_profile.set_preference("general.useragent.override", user_agent)

        if profile_preferences:
            for key, value in profile_preferences.items():
                firefox_profile.set_preference(key, value)

        if extensions:
            for extension in extensions:
                firefox_profile.add_extension(extension)

        if headless:
            os.environ.update({"MOZ_HEADLESS": "1"})
            binary = FirefoxBinary()
            binary.add_command_line_options("-headless")
            kwargs["firefox_binary"] = binary

        if incognito:
            firefox_options.add_argument("-private")

        self.driver = Firefox(
            firefox_profile,
            capabilities=firefox_capabilities,
            options=firefox_options,
            timeout=timeout,
            **kwargs
        )

        if fullscreen:
            ActionChains(self.driver).send_keys(Keys.F11).perform()

        self.element_class = WebDriverElement

        self._cookie_manager = CookieManager(self.driver)

        super(WebDriver, self).__init__(wait_time)
Ejemplo n.º 30
0
    def launch_browser(self, request=None):
        request = request or self.request
        if isinstance(request, str):
            request = {
                'browser': request
            }
            try:
                self.request.update(request)
                request = self.request
            except AttributeError:
                self.request = request
        if 'browser' in request:
            capabilities_map = {
                "Firefox":      DesiredCapabilities.FIREFOX,
                "IExplorer":    DesiredCapabilities.INTERNETEXPLORER,
                "Chrome":       DesiredCapabilities.CHROME,
                "PhantomJS":    DesiredCapabilities.PHANTOMJS,
                "Safari":       DesiredCapabilities.SAFARI,
            }
            caps = capabilities_map[request['browser']]

            ############################################
            ### Firefox
            ############################################
            if request['browser'] == 'Firefox':
                firefox_profile = FirefoxProfile()
                if 'firefox' in request:
                    if 'preferences' in request['firefox']:
                        for preference in request['firefox']['preferences']:
                            firefox_profile.set_preference(*preference)
                    if 'extensions' in request['firefox']:
                        for extension in request['firefox']['extensions']:
                            extension = PurePath(request['firefox']['extensions_path'], extension)
                            firefox_profile.add_extension(str(extension))
                    if 'mime' in request['firefox']:
                        import shutil
                        shutil.copy2(request['firefox']['mime'], firefox_profile.profile_dir)
                    if 'capabilities' in request['firefox']:
                        caps.update(request['firefox']['capabilities'])
                selenium_proxy = self.setup_proxy()
                class Mixin(Firefox, browser.BrowsingActions): pass
                self.browser = Mixin(firefox_profile, proxy=selenium_proxy, capabilities=caps)

            ############################################
            ### Internet Explorer
            ############################################
            elif request['browser'] == 'IExplorer':
                # Not a good idea => caps['nativeEvents'] = False
                iedriver_server = os.path.join(request['iexplorer']['server_path'],
                                               request['iexplorer']['server_file'])
                class Mixin(Ie, browser.BrowsingActions): pass
                self.browser = Mixin(iedriver_server, capabilities=caps)

            ############################################
            ### GhostDriver, PhantomJS
            ############################################
            elif request['browser'] == 'PhantomJS':
                service_args = ["--ignore-ssl-errors=yes"]
                caps['phantomjs.page.settings.userAgent'] = (
                    'Mozilla/5.0 (Windows NT'
                    ' 6.1; Win64; x64; rv:16.0) Gecko/20121026 Firefox/16.0'
                )

                class Mixin(PhantomJS, browser.BrowsingActions): pass
                self.browser = Mixin(service_args=service_args,
                                         desired_capabilities=caps)
                # If you don't do this, you'll get the pain:
                # https://github.com/angular/protractor/issues/585
                self.browser.set_window_size(1024, 768)

            ############################################
            ### Chrome
            ############################################
            elif request['browser'] == 'Chrome':
                chromedriver_server = os.path.join(request['chrome']['server_path'],
                                                   request['chrome']['server_file'])
                os.environ["webdriver.chrome.driver"] = chromedriver_server
                class Mixin(Chrome, browser.BrowsingActions): pass
                self.browser = Mixin(chromedriver_server)

            ############################################
            ### Safari
            ############################################
            elif request['browser'] == 'Safari':
                selenium_server = os.path.join(request['safari']['server_path'],
                                               request['safari']['server_file'])
                class Mixin(Safari, browser.BrowsingActions): pass
                self.browser = Mixin(selenium_server)
            return self.browser

        print("Please specify which browser to launch.")
        assert 'browser' in request
Ejemplo n.º 31
0
    def __init__(
        self,
        profile=None,
        extensions=None,
        user_agent=None,
        profile_preferences=None,
        fullscreen=False,
        options=None,
        headless=False,
        wait_time=2,
        desired_capabilities=None,
    ):

        firefox_profile = FirefoxProfile(profile)
        firefox_profile.set_preference("extensions.logging.enabled", False)
        firefox_profile.set_preference("network.dns.disableIPv6", False)

        firefox_profile.set_preference("browser.download.folderList", 2)
        firefox_profile.set_preference(
            "browser.download.manager.showWhenStarting", False)
        firefox_profile.set_preference("browser.download.dir", _DOWNLOAD_PATH)
        firefox_profile.set_preference(
            "browser.helperApps.neverAsk.saveToDisk", _ALL_MIME_TYPES)
        firefox_profile.set_preference("permissions.default.microphone", 1)
        firefox_profile.set_preference("permissions.default.camera", 1)
        # firefox_profile.set_preference("browser.helperApps.alwaysAsk.force", False)
        # firefox_profile.set_preference("browser.download.manager.showWhenStarting", False)

        if user_agent is not None:
            firefox_profile.set_preference("general.useragent.override",
                                           user_agent)

        if profile_preferences:
            for key, value in profile_preferences.items():
                firefox_profile.set_preference(key, value)

        if extensions:
            for extension in extensions:
                firefox_profile.add_extension(extension)

        options = Options() if options is None else options

        if headless:
            # noinspection PyDeprecation
            options.set_headless()

        firefox_capabilities = DesiredCapabilities().FIREFOX.copy()
        firefox_capabilities["marionette"] = True
        if desired_capabilities:
            firefox_capabilities.update(desired_capabilities)

        self.driver = Firefox(firefox_profile,
                              capabilities=firefox_capabilities,
                              firefox_options=options)

        if fullscreen:
            ActionChains(self.driver).send_keys(Keys.F11).perform()

        self.element_class = WebDriverElement

        self._cookie_manager = CookieManager(self.driver)

        super(WebDriver, self).__init__(wait_time)
Ejemplo n.º 32
0
class TorBrowser:
    '''
    Refactoring for 2020 12 version of Tor Browser Bundle
    '''
    def __init__(self,
                 browser_path,
                 binary_path=None,
                 profile_path=None,
                 executable_path=None,
                 socks_port=9050,
                 control_port=9051,
                 extensions=None,
                 capabilities=None,
                 headless=False,
                 capture_screen=False,
                 url=None):

        assert browser_path is not None

        self.browser_path = browser_path
        self.binary_path = binary_path
        self.profile_path = profile_path
        self.executable_path = executable_path

        self.socks_port = socks_port
        self.control_port = control_port
        self.extensions = extensions
        self.capabilities = capabilities
        self.headless = headless
        self.capture_screen = capture_screen
        self.url = url

        self.profile = None
        self.binary = None  # firefox
        self.options = None
        self.webdriver = None
        self.tor_controller = TorController()  # Start tor process..

        self._initialize()

    def _initialize(self):

        self._init_browser()
        self.profile = FirefoxProfile(self.profile_path)
        self._init_profile()
        self._init_extensions()
        self._init_capabilities()
        self._init_binary()
        self._init_options()
        self._init_webdriver()

    def _init_browser(self):

        if self.binary_path is None:
            # tor-browser_en-US/Browser/firefox
            self.binary_path = os.path.join(self.browser_path,
                                            os.path.join('Browser', 'firefox'))
        if self.profile_path is None:
            # tor-browser_en-US/Browser/TorBrowser/Data/Browser/profile.default
            self.profile_path = os.path.join(
                self.browser_path,
                os.path.join(
                    'Browser',
                    os.path.join(
                        'TorBrowser',
                        os.path.join(
                            'Data', os.path.join('Browser',
                                                 'profile.default')))))

    def _init_profile(self):

        self.profile.set_preference('browser.cache.disk.enable', False)
        self.profile.set_preference('browser.cache.memory.enable', False)
        self.profile.set_preference('browser.cache.offline.enable', False)
        self.profile.set_preference('browser.startup.page', '0')
        self.profile.set_preference('browser.startup.homepage', 'about:newtab')
        self.profile.set_preference('network.http.use-cache', False)
        self.profile.set_preference('network.proxy.type', 1)
        self.profile.set_preference('network.proxy.socks', '127.0.0.1')
        self.profile.set_preference('network.proxy.socks_port',
                                    self.socks_port)
        self.profile.set_preference('extensions.torlauncher.promp_at_startup',
                                    0)
        self.profile.set_preference('network.http.use-cache', False)
        self.profile.set_preference('webdriver.load.strategy', 'conservative')
        self.profile.set_preference('extensions.torlauncher.start_tor', False)
        self.profile.set_preference(
            'extensions.torbutton.versioncheck_enabled', False)
        self.profile.set_preference('permissions.memory_only', False)
        # update_preference('webdriver.load.strategy', 'normal')
        # update_preference('app.update.enabled', False)
        # update_preference('extensions.torbutton.versioncheck_enabled', False)
        # update_preference('extensions.torbutton.prompted_language', True)
        # update_preference('extensions.torbutton.socks_port', self.socks_port)
        # update_preference('extensions.torlauncher.control_port', self.control_port)
        # update_preference('extensions.torlauncher.start_tor', True)
        # update_preference('extensions.torbutton.block_dis', False)
        # update_preference('extensions.torbutton.custom.socks_host', '127.0.0.1')
        # update_preference('extensions.torbutton.custom.socks_port', self.socks_port)
        # update_preference('extensions.torbutton.inserted_button', True)
        # update_preference('extensions.torbutton.launch_warning', False)
        # update_preference('privacy.spoof_english', 2)
        # update_preference('extensions.torbutton.loglevel', 2)
        # update_preference('extensions.torbutton.logmethod', 0)
        # update_preference('extensions.torbutton.settings_method', 'custom')
        # update_preference('extensions.torbutton.use_privoxy', False)
        # update_preference('extensions.torlauncher.control_port', self.control_port)
        # update_preference('extensions.torlauncher.loglevel', 2)
        # update_preference('extensions.torlauncher.logmethod', 0)
        # update_preference('extensions.torlauncher.prompt_at_startup', False)

        self.profile.update_preferences()

    def _init_extensions(self):

        if self.extensions is not None:
            for extension in self.extensions:
                self.profile.add_extension(extension)

    def _init_capabilities(self):

        if self.capabilities is None:
            self.capabilities = DesiredCapabilities.FIREFOX
            self.capabilities.update({
                'handlesAlerts': True,
                'databaseEnabled': True,
                'javascriptEnabled': True,
                'browserConnectionEnabled': True
            })

    def _init_binary(self):

        self.binary = FirefoxBinary(firefox_path=self.binary_path)
        self.binary.add_command_line_options('--class', '"Tor Browser"')

    def _init_options(self):

        if self.headless is True:
            self.options = Options()
            self.options.headless = self.headless

    def _init_webdriver(self):

        self.webdriver = webdriver.Firefox(
            firefox_profile=self.profile,
            firefox_binary=self.binary,
            timeout=60,
            capabilities=self.capabilities,
            executable_path=self.executable_path,
            options=self.options)

    def connect_url(self, url):

        self.webdriver.get(url)
        WebDriverWait(self.webdriver, timeout=30).until(
            expected_conditions.presence_of_element_located(
                (By.TAG_NAME, 'body')))

    def close(self):
        try:
            self.tor_controller.stop()
            self.webdriver.quit()
        except CannotSendRequest:
            logger.error('CannotSendRequest while quitting TorBrowserDriver')
            self.binary.kill()
        except Exception as e:
            logger.error('Exception while quitting TorBrowserDriver', e)

    def init_canvas_permission(self, url):
        '''
        Create a permission DB and add exception for the canvas image extraction.
        Otherwise screenshots taken by Selenium will be just blank images due to
        canvas fingerprinting defense in Tor Browser Bundle.
        '''
        import sqlite3
        from tld import get_tld

        connection = sqlite3.connect
        permission_db = connection(
            os.path.join(self.profile_path, 'permissions.sqlite'))
        cursor = permission_db.cursor()

        # http://mxr.mozilla.org/mozilla-esr31/source/build/automation.py.in
        cursor.execute("PRAGMA user_version=3")
        cursor.execute("""CREATE TABLE IF NOT EXISTS moz_hosts (
            id INTEGER PRIMARY KEY,
            host TEXT,
            type TEXT,
            permission INTEGER,
            expireType INTEGER,
            expireTime INTEGER,
            appId INTEGER,
            isInBrowserElement INTEGER)""")

        domain = get_tld(url)
        logger.debug('Adding canvas/extractData permission for %s' % domain)
        query = """INSERT INTO 'moz_hosts' VALUES (NULL, '%s', 'canvas/extractData', 1, 0, 0, 0, 0);""" % domain
        cursor.execute(query)
        permission_db.commit()
        cursor.close()

    def take_screenshot(self, save_path):

        if save_path is not None:
            save_path = os.path.join(save_path, 'screenshot.png')
        else:
            save_path = 'screenshot.png'

        self.webdriver.get_screenshot_as_file(save_path)

    def __enter__(self):
        return self

    def __exit__(self, exc_type, exc_val, exc_tb):
        self.close()
Ejemplo n.º 33
0
def run_tests(firefox_path=None):
  basedir = os.path.dirname(__file__)
  driver = None
  profile = FirefoxProfile()
  if firefox_path:
    if sys.platform == "darwin" and os.path.isdir(firefox_path):
      firefox_path = os.path.join(firefox_path, "Contents", "MacOS", "firefox")
    binary = FirefoxBinary(firefox_path)
  else:
    binary = None

  try:
    build1 = tempfile.NamedTemporaryFile(mode="wb", suffix=".xpi", delete=False)
    build2 = tempfile.NamedTemporaryFile(mode="wb", suffix=".xpi", delete=False)
    try:
      createBuild(basedir, type="gecko", outFile=build1)
      createBuild(os.path.join(basedir, "testhelper"), type="gecko", outFile=build2)
      profile.add_extension(build1.name)
      profile.add_extension(build2.name)
    finally:
      os.unlink(build1.name)
      os.unlink(build2.name)

    driver = WebDriver(profile, firefox_binary=binary)
    driver.wait_until = lambda method: WebDriverWait(driver, default_timeout).until(lambda d: method())
    driver.accept_alert = Alert(driver).accept
    driver.keys = Keys

    def chain(*actions):
      for action in actions:
        c = ActionChains(driver)
        action(c)
        c.perform()
    driver.chain = chain

    max_timestamp = {"value": 0}
    def get_urls():
      result = []
      prefix = "[testhelper] Loading: "
      new_timestamp = max_timestamp["value"]
      for item in driver.get_log("browser"):
        timestamp = item["timestamp"]
        if timestamp <= max_timestamp["value"] or not item["message"].startswith(prefix):
          continue
        if timestamp > new_timestamp:
          new_timestamp = timestamp
        result.append(item["message"][len(prefix):])
      max_timestamp["value"] = new_timestamp
      return result
    driver.get_urls = get_urls

    def close_background_tabs():
      driver.execute_script('''
        var event = document.createEvent("Events");
        event.initEvent("testhelper_closeBackgroundTabs", true, false);
        document.dispatchEvent(event);
      ''')
    driver.close_background_tabs = close_background_tabs

    def middle_click(self):
      driver.execute_script('''
        var event = document.createEvent("Events");
        event.initEvent("testhelper_middleclick", true, false);
        arguments[0].dispatchEvent(event);
      ''', self)
    WebElement.middle_click = middle_click

    environment = {
      "__builtins__": __builtins__,
      "driver": driver,
    }

    testdir = os.path.join(basedir, "tests")
    for filename in os.listdir(testdir):
      if filename.startswith(".") or not filename.endswith(".py"):
        continue
      filepath = os.path.join(testdir, filename)
      environment["__file__"] = filepath
      with open(filepath, "rb") as handle:
        exec handle in environment
  finally:
    if driver:
      driver.quit()
    shutil.rmtree(profile.path, ignore_errors=True)
Ejemplo n.º 34
0
    def __init__(
        self,
        profile=None,
        extensions=None,
        user_agent=None,
        profile_preferences=None,
        fullscreen=False,
        wait_time=2,
        timeout=90,
        capabilities=None,
        headless=False,
        incognito=False,
        **kwargs
    ):

        firefox_profile = FirefoxProfile(profile)
        firefox_profile.set_preference("extensions.logging.enabled", False)
        firefox_profile.set_preference("network.dns.disableIPv6", False)

        firefox_capabilities = DesiredCapabilities().FIREFOX
        firefox_capabilities["marionette"] = True

        firefox_options = Options()

        if capabilities:
            for key, value in capabilities.items():
                firefox_capabilities[key] = value

        if user_agent is not None:
            firefox_profile.set_preference("general.useragent.override", user_agent)

        if profile_preferences:
            for key, value in profile_preferences.items():
                firefox_profile.set_preference(key, value)

        if extensions:
            for extension in extensions:
                firefox_profile.add_extension(extension)

        if headless:
            os.environ.update({"MOZ_HEADLESS": "1"})
            if 'firefox_binary' in kwargs:
                if isinstance(kwargs['firefox_binary'], six.string_types):
                    binary = FirefoxBinary(kwargs['firefox_binary'])
                else:
                    binary = kwargs['firefox_binary']
            else:
                binary = FirefoxBinary()
            binary.add_command_line_options("-headless")
            kwargs["firefox_binary"] = binary

        if incognito:
            firefox_options.add_argument("-private")

        self.driver = Firefox(
            firefox_profile,
            capabilities=firefox_capabilities,
            options=firefox_options,
            timeout=timeout,
            **kwargs
        )

        if fullscreen:
            ActionChains(self.driver).send_keys(Keys.F11).perform()

        self.element_class = WebDriverElement

        self._cookie_manager = CookieManager(self.driver)

        super(WebDriver, self).__init__(wait_time)