Beispiel #1
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
Beispiel #2
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()
Beispiel #3
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)
Beispiel #4
0
class Login():
    def __init__(self):
        self.browser = {}

    @keyword
    def open_browser(self, name='chrome'):
        self.browser = Browser(browser=name)

    @keyword
    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)

    @keyword
    def go_to_login(self):
        self.browser.goto(BASE_TEST_URL + "login")

    @keyword
    def login_as(self, username, password):
        self.browser.input(id='username').send_keys(username)
        self.browser.input(id='password').send_keys(password)
        self.browser.button(class_name='radius').click()

    @keyword
    def is_error_message_visible(self):
        assert self.browser.element(class_name='error').present

    @keyword
    def is_login_successful(self):
        assert self.browser.element(class_name='success').present

    @keyword
    def close_browser(self):
        self.browser.quit()
Beispiel #5
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())
Beispiel #6
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()
Beispiel #7
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())
Beispiel #8
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()
Beispiel #9
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)
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()
Beispiel #11
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'
Beispiel #12
0
    def test_goes_to_the_given_url_and_return_an_instance_of_itself(
            self, page, bkwargs):
        from nerodia.browser import Browser
        browser = Browser.start(page.url('non_control_elements.html'),
                                **bkwargs)

        assert isinstance(browser, Browser)
        assert browser.title == 'Non-control elements'
        browser.close()
Beispiel #13
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']
Beispiel #14
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()
Beispiel #15
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()
Beispiel #16
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)
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()
Beispiel #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)
Beispiel #19
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()
Beispiel #21
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:
Beispiel #22
0
 def test_takes_driver_instance_as_argument(self, browser):
     new_browser = Browser(browser.wd)
     assert new_browser.wd == browser.wd
Beispiel #23
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:
Beispiel #24
0
from nerodia.browser import Browser

b = Browser(browser='chrome')
b.goto("http://toolsqa.com/automation-practice-form/")
print(b.title)

uploadfile = "/Users/Kerrrlo/Downloads/Photos/boss.jpeg"
b.file_field(id="photo").set(uploadfile)
from nerodia.browser import Browser

browser = Browser(browser='chrome')
browser.goto(
    'http://wp.curve.in.th/wp-login.php?loggedout=true&wp_lang=en_US&jetpack-sso-show-default-form=1'
)
t = browser.text_field(id='user_login')
t.value = '**'

t = browser.text_field(id='user_pass')
t.value = '***'

browser.button(id='wp-submit').click()
browser.wait_until(timeout=2,
                   interval=0.5,
                   method=lambda e: e.title.startswith("Dashboard"))

posts = []
for i in range(1, 6):
    browser.goto(f'http://wp.curve.in.th/wp-admin/edit.php?paged={i}')

    for t in browser.trs(class_name="type-post"):
        p = {}
        date = t.td(class_name="date").span().text
        date = date.replace("/", "-")
        p["date"] = date
        link = t.div(class_name="row-actions").span(
            class_name="view").link().href
        p["view_link"] = link

        p["name"] = link.replace("http://wp.curve.in.th/", "")
Beispiel #26
0
 def test_works_even_if_browser_is_closed(self, browser, bkwargs):
     b = Browser(**bkwargs)
     b.close()
     repr(b)
Beispiel #27
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())
Beispiel #28
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()
#!/usr/bin/env python3
from nerodia.browser import Browser
import re

loginsite = "https://mggym-borken.lms.schulon.org/login/index.php"

browser = Browser(browser='firefox')
browser.goto(loginsite)
usrn = browser.text_field(name="username")
usrn.value = ''
pswd = browser.text_field(name="password")
pswd.value = ''
browser.button(value='Login').click()

html = browser.html

#print(html:=browser.html)
matches = re.findall(
    '<span.*>Meine Kurse<\/span>.*href="(https:\/\/mggym-borken.lms.schulon.org\/course\/view.php\?id=\d+)">.*href="(https:\/\/mggym-borken.lms.schulon.org\/course\/view.php\?id=\d+)">.*href="(https:\/\/mggym-borken.lms.schulon.org\/course\/view.php\?id=\d+)">',
    html)
kurse = list(matches[0])
#print(kurse)

for kurs in kurse:
    browser.goto(kurs)
    html = browser.html
    matches = re.findall(
        'href="(https:\/\/mggym-borken\.lms\.schulon\.org\/mod\/resource\/view.php\?id=\d+)"><img src="https:\/\/mggym-borken\.lms\.schulon\.org\/theme\/image\.php\/classic\/core\/1587401819\/f\/pdf-24"',
        html)
    print(matches)
Beispiel #30
0
 def create(self):
     return Browser(**self.kwargs)
from time import sleep

REDIRECT_SLEEP_SEC = 2
def login():
    username = '******'
    password = ""
    browser.link(text='Log In').click()
    sleep(REDIRECT_SLEEP_SEC)
    # require 'pry'; binding.pry
    browser.text_field(name='username').set(username)
    browser.text_field(name='password').set(password)
    browser.input(class_name='twikiSubmit').click()
    sleep(REDIRECT_SLEEP_SEC)
    my_link = browser.element(text="Cheng Ji")
    print(my_link.html)

# if in the root:
# from selenium.webdriver.chrome.options import Options

# options = Options()
# options.add_argument('--no-sandbox')
# options.add_argument('--disable-dev-shm-usage')
# options.add_argument('--headless')
# options.add_argument('--disable-gpu')
# browser = Browser(browser='chrome', options=options)
browser = Browser(browser='chrome', headless=True)
# cannot using with
# with Browser(browser='chrome', headless=False) as browser:
browser.goto("http://wiki.fortinet.com/twiki/bin/view")
login()
# browser.close()