def browser(request, browser_config):
    caps = {}
    caps.update(browser_config)

    build_tag = "nerodia-build"
    username = environ.get('SAUCE_USERNAME', None)
    access_key = environ.get('SAUCE_ACCESS_KEY', None)

    selenium_endpoint = "http://ondemand.saucelabs.com/wd/hub"

    caps['username'] = username
    caps['accesskey'] = access_key
    caps['name'] = request.node.name
    caps['build'] = build_tag

    executor = RemoteConnection(selenium_endpoint, resolve_ip=False)
    remote = webdriver.Remote(command_executor=executor,
                              desired_capabilities=caps)

    browser = Browser(browser=remote, desired_capabilities=caps)
    yield browser

    sauce_result = "failed" if request.node.rep_call.failed else "passed"
    browser.execute_script("sauce:job-result={}".format(sauce_result))
    browser.quit()
Esempio n. 2
0
 def test_can_pass_port(self, mocker, driver):
     mock = mocker.patch('selenium.webdriver.remote.webdriver.WebDriver')
     port = 5678
     Browser(driver, port=port)
     mock.assert_called_once()
     assert mock.call_args_list[0][1].get('command_executor') == \
         Capabilities.DEFAULT_URL.format(port)
Esempio n. 3
0
 def test_can_pass_url(self, mocker, driver):
     from selenium.webdriver import DesiredCapabilities
     name = driver.upper() if driver != 'ie' else 'INTERNETEXPLORER'
     caps = getattr(DesiredCapabilities, name)
     mock = mocker.patch('selenium.webdriver.remote.webdriver.WebDriver')
     Browser(driver, url='spam')
     mock.assert_called_once()
     assert mock.call_args_list[0][1].get('command_executor') == 'spam'
     assert mock.call_args_list[0][1]['desired_capabilities'].get('browserName') == \
         caps['browserName']
Esempio n. 4
0
 def test_raises_correct_exception_when_trying_to_interact_with_a_closed_browser(
         self, bkwargs, page):
     from nerodia.browser import Browser
     from nerodia.exception import Error
     with pytest.raises(Error) as e:
         b = Browser(**bkwargs)
         b.goto(page.url('definition_lists.html'))
         b.close()
         b.dl(id='experience-list').id
     assert e.value.args[0] == 'browser was closed'
Esempio n. 5
0
def selenium_browser_chrome(context):
    # -- HINT: @behave.fixture is similar to @contextlib.contextmanager
    context.browser = Browser(browser='chrome',
                              options={
                                  'headless': True,
                                  'no-sandbox': True
                              })
    yield context.browser
    # -- CLEANUP-FIXTURE PART:
    context.browser.close()
Esempio n. 6
0
    def test_passes_capabilities_to_selenium(self, browser_manager):
        browser_name = browser_manager.name
        caps_name = 'internetexplorer' if browser_name == 'ie' else browser_name
        caps = getattr(DesiredCapabilities, caps_name.upper()).copy()
        caps.update({'acceptInsecureCerts': True})
        browser = Browser(browser_name, desired_capabilities=caps)
        insecure = browser.wd.capabilities['acceptInsecureCerts']
        browser.quit()

        assert insecure is True
Esempio n. 7
0
def basicSearch():
    # Retirado do Site do Nerodia, para teste inicial #
    browser = Browser(browser='chrome')
    browser.goto('google.com')

    search_input = browser.text_field(title='Pesquisar')
    search_input.value = 'nerodia'
    browser.button(value='Pesquisa Google').click()

    browser.close()
Esempio n. 8
0
 def test_takes_listener_as_argument(self, browser_manager):
     from selenium.webdriver.support.abstract_event_listener import AbstractEventListener
     from selenium.webdriver.support.event_firing_webdriver import EventFiringWebDriver
     ael = AbstractEventListener()
     new_browser = None
     try:
         new_browser = Browser(**dict(browser_manager.kwargs, listener=ael))
         assert isinstance(new_browser.wd, EventFiringWebDriver)
     finally:
         if new_browser:
             new_browser.quit()
Esempio n. 9
0
    def test_remote_when_passed_url_arg(self, browser, browser_manager):
        from selenium.webdriver.remote.webdriver import RemoteConnection, WebDriver
        caps_name = 'internetexplorer' if browser.name == 'internet explorer' else browser.name
        caps = getattr(DesiredCapabilities, caps_name.upper()).copy()
        browser = Browser(browser_manager.name, desired_capabilities=caps)
        driver = browser.wd
        executor = driver.command_executor
        browser.quit()

        assert driver.__class__.__name__ == WebDriver.__name__
        assert driver.name == caps.get('browserName')
        assert isinstance(executor, RemoteConnection)
Esempio n. 10
0
def launch_Kraken():

# Example
# - https://www.programcreek.com/python/example/100026/selenium.webdriver.FirefoxProfile
# Firefox profiles
# - 
# Firefox options
# - https://www.selenium.dev/selenium/docs/api/py/webdriver_firefox/selenium.webdriver.firefox.options.html

    from inspect import getsourcefile
    from os.path import abspath

    pathToHere = abspath(getsourcefile(lambda:0))


    ### 1 Create Firefox Profile instance and Options instance 
    ffprofile = webdriver.FirefoxProfile()
    options = webdriver.firefox.options.Options()

    # Set the download location
    ffprofile.set_preference('browser.download.dir', pathToHere)

    # Disable native events ( vs synthesized events)
    # Always set as False to prevent certain problems 
    ffprofile.set_preference('webdriver_enable_native_events', False)

    # Location of Browser executable 
    options.binary_location = "/Applications/Firefox-Dev.app/Contents/MacOS/firefox"

    # Run headless / no interface
    #options.add_argument('--headless')

    # Ignore HTTPs certificate errors 
    options.add_argument('--ignore-certificate-errors')

    driver = webdriver.Firefox(firefox_profile=ffprofile, firefox_options=options)
    driver.implicitly_wait(30)
    #driver.maximize_window()

    ### 2 Create Nerodia session
    browserSession = Browser(driver)

    try:
        # Launch the website 
        browserSession.goto( API_ENDPOINT )

        return browserSession

    except:
        logging.exception("!!! Unable to create Browser Session !!!")
        logging.exception(sys.exec_info())
Esempio n. 11
0
def launch_Simple():
# Returns a BROWSER SESSION

    targetBrowser = 'Firefox'

    try:
        browserSession = Browser(browser=targetBrowser)
        browserSession.goto( API_ENDPOINT )

        return browserSession

    except:
        logging.exception("!!! Unable to create Browser Session !!!")
        logging.exception(sys.exec_info())
Esempio n. 12
0
    def test_accepts_firefox_profile(self, browser_manager, webserver):
        from selenium.webdriver.firefox.firefox_profile import FirefoxProfile
        home_page = webserver.path_for('special_chars.html')

        profile = FirefoxProfile()
        profile.set_preference('browser.startup.homepage', home_page)
        profile.set_preference('browser.startup.page', 1)
        kwargs = browser_manager.kwargs.copy()
        kwargs['options'] = {'profile': profile}

        new_browser = Browser(**kwargs)
        try:
            assert new_browser.url == home_page
        finally:
            new_browser.quit()
Esempio n. 13
0
def main(site):
    "Get all redirect links to a series (still have to extract manually  fromAndTo is an good option for this)"
    base = 'https://s.to'
    if base in site:
        site = site.replace(base, "")
    if not site[-1] == "/":
        site = site + "/"
    #print(base)
    #print(site)

    browser = Browser(browser='firefox')
    browser.goto(base + site)
    html = browser.html

    matches = re.findall(
        '<a (?:class="active" )?href="(' + site +
        r'staffel-\d+)" title="Staffel \d+">\d+</a>', html)
    #print(matches)
    episodeRegex = re.compile(
        r'<a href="(' + site +
        r'staffel-\d+/episode-\d+)" data-episode-id="\d*" title="Staffel \d+ Episode \d+" data-season-id="\d+">\d+</a>'
    )
    allepisodes = list()
    for m in matches:
        browser.goto(base + m)
        html = browser.html
        episodes = episodeRegex.findall(html)
        allepisodes.extend(episodes)
    #print(allepisodes)

    VivoRegex = re.compile(
        r'<aclass="watchEpisode"itemprop="url"href="(/redirect/\d*)"target="_blank">\n<iclass="iconVivo"title="HosterVivo"></i>\n<h4>Vivo</h4>\n<divclass="hosterSiteVideoButton">Videoöffnen</div>'
    )

    vivolinks = list()

    for e in allepisodes:
        browser.goto(base + e)
        html = browser.html
        html = html.replace(" ", "")
        vivolink = VivoRegex.findall(html)
        vivolinks.append(vivolink[0])
    #print(vivolinks)
    for vl in vivolinks:
        print(base + vl)
    browser.close()
Esempio n. 14
0
def run():
    br = Browser(browser='chrome')

    br.goto("https://watir.com")

    # Check that "Titus" is somewhere in the page text
    assert "Watir" in br.text

    # Check "open source" is in the intro
    intro_text = br.div(class_name='intro').text
    assert "open source" in intro_text

    # Check that the page is correct via the URL
    br.link(text='Guides').click()
    assert 'watir.com/guides/' in br.url

    br.close()
Esempio n. 15
0
def before_scenario(context, scenario):
    # We set our Guerrilla email. this is the temporary email service.
    context.email_session = GuerrillaMailSession()
    context.temp_email = context.email_session.get_session_state()['email_address']
    # Start browser
    options = chrome_options()
    # options = firefox_options()
    options.add_argument("--start-maximized")
    options.add_argument("--incognito")
    options.add_argument("--private")
    # options.add_argument("--headless")
    # context.browser = webdriver.Edge()
    context.browser = Browser(browser='chrome', options=options)
    context.browser.window().maximize()
    # We create a dict to store the data of the fake user
    context.fake_user = dict()
    # Print which scenario we are about to test
    print(f'Starting test for {scenario.tags[0]}: {context.scenario.name}\n')
def browser(request):
    caps = {
        "browserName": "Chrome",
        "sauce:options": {
            "browserName": "Chrome",
            "platformName": "Windows 10",
            "browserVersion": "latest"
        }
    }

    username = os.environ['SAUCE_USERNAME']
    access_key = os.environ['SAUCE_ACCESS_KEY']

    remote_url = 'https://{}:{}@ondemand.saucelabs.com/wd/hub/'.format(username, access_key)

    remote = webdriver.Remote(command_executor=remote_url, desired_capabilities=caps)
    driver = Browser(browser=remote, desired_capabilities=caps)
    driver.goto(TEST_APP_URL)
    yield driver

    driver.quit()
Esempio n. 17
0
    def open_on_sauce(self):
        caps = {
            'platformName': 'Windows 10',
            'plaformVersion': 'latest',
            'browserName': 'chrome'
        }

        username = environ.get('SAUCE_USERNAME', None)
        access_key = environ.get('SAUCE_ACCESS_KEY', None)

        selenium_endpoint = "http://ondemand.saucelabs.com/wd/hub"

        caps['username'] = username
        caps['accesskey'] = access_key
        caps['name'] = 'Robot Nerodia - Login'

        executor = RemoteConnection(selenium_endpoint, resolve_ip=False)
        remote = webdriver.Remote(command_executor=executor,
                                  desired_capabilities=caps)

        self.browser = Browser(browser=remote, desired_capabilities=caps)
Esempio n. 18
0
    def test_accepts_browser_options(self, browser_manager, mocker):
        from importlib import import_module
        browser_name = browser_manager.name
        module = import_module(
            'selenium.webdriver.{}.options'.format(browser_name))
        opts = module.Options()

        mock = mocker.patch(
            'selenium.webdriver.{}.webdriver.WebDriver'.format(browser_name))

        caps_name = 'internetexplorer' if browser_name == 'ie' else browser_name
        caps = getattr(DesiredCapabilities, caps_name.upper()).copy()

        browser = Browser(browser_name, options=opts)
        browser.quit()

        key = 'desired_capabilities' if browser_name in ['safari', 'chrome'
                                                         ] else 'capabilities'

        kwargs = {}
        kwargs[key] = caps
        kwargs['options'] = opts
        mock.assert_called_once_with(**kwargs)
Esempio n. 19
0
 def test_takes_driver_instance_as_argument(self, browser):
     new_browser = Browser(browser.wd)
     assert new_browser.wd == browser.wd
Esempio n. 20
0
from nerodia.browser import Browser
import pandas as pd
import time

browser = Browser(
    'chrome', headless=True
)  # Set Headless to True so the physical GUI of Chrome doesn't have to be used ⚡️
browser.goto('https://www.premierleague.com/stats/top/players/goals?se=274'
             )  # Now use the browser to navigate to the EPL Stats Page

time.sleep(5)  # Allow data time to load into HTML

goals = pd.read_html(
    browser.html
)[0]  # Use Pandas to fetch all the tables within the browser html, select the first table it finds ([0])

# When you've reached the end of the table, the Page Next button adds class 'inactive' to the page next element (div). Use browser tools to inspect the button on the last page to see for yourself.
# As we know this, we can keep clicking the page next button and scraping the table until the button is inactive. In Python we can use while loop:
while ((browser.div(
        class_name=["paginationBtn", "paginationNextContainer", "inactive"])
        ).exists == False):
    browser.div(
        class_name=["paginationBtn", "paginationNextContainer"]
    ).fire_event(
        'onClick'
    )  # fire onClick event on page next element. If it was a button element (not a div element), we could simply use .click()
    time.sleep(2)
    goals = goals.append(
        pd.read_html(browser.html)[0]
    )  # append the table from this page with the existing goals dataframe.
    print("Next Page")
Esempio n. 21
0
        #'--headless',
    ],
    'desired_capabilities': {
        'loggingPrefs': {
            'browser': 'ALL'
        },
    },
}
if args.chrome_binary is not None:
    browser_opts['binary'] = args.chrome_binary
if args.chrome_stdout is not None:
    # service_args processing requires patching nerodia.Capabilites._process_arguments()
    driver_opts['service_args'] = [
        '--verbose', '--log-path={0}'.format(args.chrome_stdout)
    ]
browser = Browser(browser='chrome', options=browser_opts, **driver_opts)

#def at_exit_print_browser_output(browser):
#    print(browser.wd.get_log('browser'), file=sys.stderr)
#atexit.register(at_exit_print_browser_output, browser)
#DesiredCapabilities.CHROME['loggingPrefs'] = {'browser': 'ALL'}
#print(driver.get_log('browser'))

browser_pid = Process(browser.wd.service.process.pid).children()[0].pid
print(browser_pid, flush=True, file=sys.stdout)


def try_until_success(calls, exceptions_max=5):
    success = False
    exceptions = []
    while not success:
Esempio n. 22
0
 def open_browser(self, name='chrome'):
     self.browser = Browser(browser=name)
Esempio n. 23
0
 def test_can_pass_executable_path(self, mocker, driver):
     mock = mocker.patch('selenium.webdriver.{}.webdriver.WebDriver'.format(driver))
     Browser(driver, executable_path='spam')
     mock.assert_called_once()
     assert mock.call_args_list[0][1].get('executable_path') == 'spam'
Esempio n. 24
0
def iniciaBot():
    # Inicializacao do Bot #
    browser = Browser(browser='chrome')

    return browser
Esempio n. 25
0
 def test_works_even_if_browser_is_closed(self, browser, bkwargs):
     b = Browser(**bkwargs)
     b.close()
     repr(b)
Esempio n. 26
0
from nerodia.browser import Browser

br = Browser(browser="firefox")
br.goto("https://www.w3schools.com/html/html_form_elements.asp")
br.element(css="textarea[cols='30']").send_keys("hello world")
br.element(css="textarea[cols='30']").send_keys([COMMAND + 't'])

browser.close()
Esempio n. 27
0
"""Basic script showing how Nerodia works."""
from nerodia.browser import Browser

br = Browser(browser='firefox')

br.goto("https://watir.com")

# Check that "Titus" is somewhere in the page text
assert "Watir" in br.text

# Check "open source" is in the intro
intro_text = br.div(class_name='intro').text
assert "open source" in intro_text

# Check that the page is correct via the URL
br.link(text='Guides').click()
assert 'watir.com/guides/' in br.url

br.close()
Esempio n. 28
0
from nerodia.browser import Browser
import re
from selenium import webdriver
import json

BASE = "https://herdt-campus.com"

fp = webdriver.FirefoxProfile('/home/bf/.mozilla/firefox/a67xxtyb.auto')
driver = webdriver.Firefox(fp)

#browser = Browser(browser='firefox')

browser = Browser(driver)

browser.goto('https://bk-ostvest.lms.schulon.org/mod/url/view.php?id=16833')

usrn = browser.text_field(name='username')
usrn.value = ''
pswd = browser.text_field(name='password')
pswd.value = ''
browser.button(value='Login').click()

browser.button(value='Ich stimme zu!').click()

katalog = re.findall(
    r'<a class="catalog-nav-link" href="(\/category\/herdt-themen\/[\w\/\- ]*)">[\w\/\- ]*<\/a>',
    browser.html)

categorieDict = dict()

for category in katalog:
Esempio n. 29
0
 def create(self):
     return Browser(**self.kwargs)
Esempio n. 30
0
# Based on http://watir.com/guides/form-example/

from nerodia.browser import Browser
from time import sleep  # needed to perform sleep
from faker import Faker  # needed for fake form data
import os  # needed for file path

# Setup
browser = Browser(browser='chrome')
browser.window().maximize()

# Navigate to the Page
browser.goto('a.testaddressbook.com')

# Authenticate and Navigate to the Form
browser.link(id='sign-in').click()
browser.text_field(data_test='email').set('*****@*****.**')
browser.text_field(data_test='password').set('password')
browser.button(name='commit').click()
browser.link(data_test='addresses').click()
browser.link(data_test='create').click()

# This uses the Faker Library to give us Random Data.
# Read more about Faker Library here: https://pypi.org/project/Faker/

fake = Faker()  # So we can use fake.name() instead of Faker().name()
browser.text_field(id='address_first_name').set(fake.first_name())
browser.text_field(id='address_last_name').set(fake.last_name())
browser.text_field(id='address_street_address').set(fake.street_address())
browser.text_field(id='address_secondary_address').set(
    fake.secondary_address())