Ejemplo n.º 1
0
from selenium import webdriver
from webdriver_manager.chrome import ChromeDriverManager
from webdriver_manager.opera import OperaDriverManager
from webdriver_manager.firefox import GeckoDriverManager
from selenium.webdriver.common.by import By
import time

browser = "chrome"
if browser == 'chrome':
    driver = webdriver.Chrome(ChromeDriverManager().install())
elif browser == 'firefox':
    driver = webdriver.Firefox(executable_path=GeckoDriverManager().install())
elif browser == 'opera':
    driver = webdriver.Opera(executable_path=OperaDriverManager().install())

time.sleep(5)
driver.maximize_window()
driver.get('https://reactquiztype.herokuapp.com/')
print(driver.title)

#css-selector for multiple classes

# driver.find_element(By.CSS_SELECTOR,"button[class*='waves-light']").click()

# xpath with text
# time.sleep(5)
# driver.find_element(By.XPATH,"//button[text()='Submit']").click()

#name
driver.find_element(By.NAME, 'firstname').send_keys('Darshan')
Ejemplo n.º 2
0
 def create_opera(self, desired_capabilities, remote_url, options=None, service_log_path=None):
     if is_truthy(remote_url):
         defaul_caps = webdriver.DesiredCapabilities.OPERA.copy()
         desired_capabilities = self._remote_capabilities_resolver(desired_capabilities, defaul_caps)
         return self._remote(desired_capabilities, remote_url, options=options)
     return webdriver.Opera(options=options, service_log_path=service_log_path, **desired_capabilities)
    from selenium import webdriver
    import logging

    logger = logging.getLogger('simple_example')
    logger.setLevel(logging.INFO)
    ch = logging.StreamHandler()
    ch.setLevel(logging.DEBUG)
    formatter = logging.Formatter(
        '%(asctime)s - %(name)s - %(levelname)s - %(message)s')
    ch.setFormatter(formatter)
    logger.addHandler(ch)
    fh = logging.FileHandler('Test1OperaLog.log')
    fh.setLevel(logging.DEBUG)
    logger.addHandler(fh)

    driver = webdriver.Opera(executable_path='C:\Drivers\operadriver.exe')

    logger.info('Przejscie na stronę Plan Zajęć PJATK')
    driver.get('https://planzajec.pjwstk.edu.pl/')
    logger.info('Przejscie do planu ogólnego')
    temp = driver.find_element_by_link_text('Ogólny plan zajęć')
    temp.click()
    logger.info('Otwarcie listy miast')
    temp = driver.find_element_by_id('WydzialComboBox_Arrow')
    temp.click()
    logger.info('Wybranie Gdańska')
    temp = driver.find_element_by_class_name('rcbItem')
    temp.click()

    driver.close()
Ejemplo n.º 4
0
def get_local_driver(browser_name, headless, proxy_string, proxy_auth,
                     proxy_user, proxy_pass, user_agent, disable_csp,
                     enable_sync, user_data_dir, extension_zip, extension_dir):
    '''
    Spins up a new web browser and returns the driver.
    Can also be used to spin up additional browsers for the same test.
    '''
    downloads_path = download_helper.get_downloads_folder()
    download_helper.reset_downloads_folder()

    if browser_name == constants.Browser.FIREFOX:
        try:
            try:
                # Use Geckodriver for Firefox if it's on the PATH
                profile = _create_firefox_profile(downloads_path, proxy_string,
                                                  user_agent, disable_csp)
                firefox_capabilities = DesiredCapabilities.FIREFOX.copy()
                firefox_capabilities['marionette'] = True
                options = webdriver.FirefoxOptions()
                if headless:
                    options.add_argument('-headless')
                if LOCAL_GECKODRIVER and os.path.exists(LOCAL_GECKODRIVER):
                    make_driver_executable_if_not(LOCAL_GECKODRIVER)
                    firefox_driver = webdriver.Firefox(
                        firefox_profile=profile,
                        capabilities=firefox_capabilities,
                        options=options,
                        executable_path=LOCAL_GECKODRIVER)
                else:
                    firefox_driver = webdriver.Firefox(
                        firefox_profile=profile,
                        capabilities=firefox_capabilities,
                        options=options)
            except WebDriverException:
                # Don't use Geckodriver: Only works for old versions of Firefox
                profile = _create_firefox_profile(downloads_path, proxy_string,
                                                  user_agent, disable_csp)
                firefox_capabilities = DesiredCapabilities.FIREFOX.copy()
                firefox_capabilities['marionette'] = False
                firefox_driver = webdriver.Firefox(
                    firefox_profile=profile, capabilities=firefox_capabilities)
            return firefox_driver
        except Exception as e:
            if headless:
                raise Exception(e)
            return webdriver.Firefox()
    elif browser_name == constants.Browser.INTERNET_EXPLORER:
        if not IS_WINDOWS:
            raise Exception(
                "IE Browser is for Windows-based operating systems only!")
        from selenium.webdriver.ie.options import Options
        ie_options = Options()
        ie_options.ignore_protected_mode_settings = False
        ie_options.ignore_zoom_level = True
        ie_options.require_window_focus = False
        ie_options.native_events = True
        ie_options.full_page_screenshot = True
        ie_options.persistent_hover = True
        ie_capabilities = ie_options.to_capabilities()
        if LOCAL_IEDRIVER and os.path.exists(LOCAL_IEDRIVER):
            make_driver_executable_if_not(LOCAL_IEDRIVER)
            return webdriver.Ie(capabilities=ie_capabilities,
                                executable_path=LOCAL_IEDRIVER)
        else:
            return webdriver.Ie(capabilities=ie_capabilities)
    elif browser_name == constants.Browser.EDGE:
        if LOCAL_EDGEDRIVER and os.path.exists(LOCAL_EDGEDRIVER):
            make_driver_executable_if_not(LOCAL_EDGEDRIVER)
            # The new Microsoft Edge browser is based on Chromium
            chrome_options = _set_chrome_options(downloads_path, headless,
                                                 proxy_string, proxy_auth,
                                                 proxy_user, proxy_pass,
                                                 user_agent, disable_csp,
                                                 enable_sync, user_data_dir,
                                                 extension_zip, extension_dir)
            return webdriver.Chrome(executable_path=LOCAL_EDGEDRIVER,
                                    options=chrome_options)
        else:
            return webdriver.Edge()
    elif browser_name == constants.Browser.SAFARI:
        return webdriver.Safari()
    elif browser_name == constants.Browser.OPERA:
        if LOCAL_OPERADRIVER and os.path.exists(LOCAL_OPERADRIVER):
            make_driver_executable_if_not(LOCAL_OPERADRIVER)
            return webdriver.Opera(executable_path=LOCAL_OPERADRIVER)
        else:
            return webdriver.Opera()
    elif browser_name == constants.Browser.PHANTOM_JS:
        with warnings.catch_warnings():
            # Ignore "PhantomJS has been deprecated" UserWarning
            warnings.simplefilter("ignore", category=UserWarning)
            return webdriver.PhantomJS()
    elif browser_name == constants.Browser.GOOGLE_CHROME:
        try:
            chrome_options = _set_chrome_options(downloads_path, headless,
                                                 proxy_string, proxy_auth,
                                                 proxy_user, proxy_pass,
                                                 user_agent, disable_csp,
                                                 enable_sync, user_data_dir,
                                                 extension_zip, extension_dir)
            if LOCAL_CHROMEDRIVER and os.path.exists(LOCAL_CHROMEDRIVER):
                make_driver_executable_if_not(LOCAL_CHROMEDRIVER)
                return webdriver.Chrome(executable_path=LOCAL_CHROMEDRIVER,
                                        options=chrome_options)
            else:
                return webdriver.Chrome(options=chrome_options)
        except Exception as e:
            if headless:
                raise Exception(e)
            if LOCAL_CHROMEDRIVER and os.path.exists(LOCAL_CHROMEDRIVER):
                make_driver_executable_if_not(LOCAL_CHROMEDRIVER)
                return webdriver.Chrome(executable_path=LOCAL_CHROMEDRIVER)
            else:
                return webdriver.Chrome()
    else:
        raise Exception("%s is not a valid browser option for this system!" %
                        browser_name)
Ejemplo n.º 5
0
@author: Janusz
https://stackoverflow.com/questions/43441269/finding-an-element-within-an-element-using-selenium-webdriver
.// search only in parent element
// search whole document
"""

import logging
import time
from collections import namedtuple

import pandas as pd
from selenium import webdriver

logging.basicConfig(level=logging.INFO)
driver = webdriver.Opera()
driver.get("https://tftactics.gg/tierlist/origins")
driver.maximize_window()
time.sleep(3)
accept_all_cookies_button = driver.find_element_by_xpath(
    '//a[@class="cmpboxbtn cmpboxbtnyes"]')
accept_all_cookies_button.click()
time.sleep(1)

origin_container_class = "characters-item"

elements_inside_origin_container_class = driver.find_elements_by_class_name(
    origin_container_class)

origin_list = []
for element in elements_inside_origin_container_class:
Ejemplo n.º 6
0
                if os.path.join(GlobalUtils.RESOURCES_GECKO32_PATH) in os.environ["PATH"]:
                    os.environ["PATH"] = os.environ["PATH"].replace(os.pathsep + os.path.join(GlobalUtils.RESOURCES_GECKO32_PATH), "")
                if not os.path.join(GlobalUtils.RESOURCES_GECKO64_PATH) in os.environ["PATH"]:
                    os.environ["PATH"] += os.pathsep + os.path.join(GlobalUtils.RESOURCES_GECKO64_PATH)
                _driver = webdriver.Firefox(firefox_profile=profile, capabilities=firefox_capabilities)
            else:
                raise e
        return _driver
    elif browser_name == GlobalUtils.BROWSER_NAMES[Browsers.OPERA]:
        desired_capabilities = {}
        des_caps = _get_browser_options_from_project_xml("default", GlobalUtils.BROWSER_FULL_NAMES[GlobalUtils.BROWSER_NAMES[Browsers.OPERA]],
                                                         "desired_capabilities")
        for arg in des_caps:
            desired_capabilities[arg["option"]] = eval(arg["text"])

        _driver = webdriver.Opera(desired_capabilities=desired_capabilities)
        return _driver

    elif browser_name == GlobalUtils.BROWSER_NAMES[Browsers.ANDROID_CHROME]:
        desired_caps = {}
        des_caps = _get_browser_options_from_project_xml("default",
                                                         GlobalUtils.BROWSER_FULL_NAMES[GlobalUtils.BROWSER_NAMES[Browsers.ANDROID_CHROME]],
                                                         "desired_caps")
        for arg in des_caps:
            desired_caps[arg["option"]] = eval(arg["text"])

        _driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps)
        return _driver

    elif browser_name == GlobalUtils.BROWSER_NAMES[Browsers.ANDROID_APPLICATION]:
        desired_caps = {}
Ejemplo n.º 7
0
    driver = webdriver.Chrome()

if 'driver' not in locals():
    if sys.argv[1].lower() == 'chrome':
        driver = webdriver.Chrome()
    elif sys.argv[1].lower() == 'firefox':
        driver = webdriver.Firefox()
    elif sys.argv[1].lower() == 'ie':
        driver = webdriver.Ie()
    elif sys.argv[1].lower() == 'edge':
        driver = webdriver.Edge()
    elif sys.argv[1].lower() == 'opera':
        options = webdriver.ChromeOptions()
        options.binary_location = \
            'C:\\Program Files\\Opera\\48.0.2685.50\\opera.exe'
        driver = webdriver.Opera(opera_options=options)
    # MacOS options
    elif sys.argv[1].lower() == 'safari':
        driver = webdriver.Safari()
    elif sys.argv[1].lower() == 'chromemac':
        driver = webdriver.Chrome
        ('/volumes/OrangeWhite/Dropbox/WebDev/selenium/chromedriver')
    # Argument provided didn't match anything above
    else:
        driver = webdriver.Chrome()

# -----------------------------------------------------------------------------
# Setup and initial URL
# -----------------------------------------------------------------------------
# driver.set_page_load_timeout(30)
driver.get('https://dev.fifteenlines.com/login')
Ejemplo n.º 8
0
def test_setup():
    global driver
    driver = webdriver.Opera(
        executable_path="/Users/Ms/Selenium webdriver driver/operadriver")
    driver.implicitly_wait(10)
    driver.maximize_window()
Ejemplo n.º 9
0
def main(args):
    """Launches DashPi"""

    logger = logging.getLogger('DashPi')

    # Load the user's configuration file
    logger.debug('Loading configuration from "%s"', args.config)

    try:
        with open(args.config, 'r') as yml:
            config = loadconfig(yml)

    except IOError:
        logger.error('The configuration file "%s" could not be found',
                     args.config)
        return False

    # See if the configuration file has debugging set (command line overrides this)
    if (ARGS.verbose is None or ARGS.verbose <= 0
        ) and 'debug' in config and config['debug'] is True:
        if 'verbose' in config and config['verbose'] is True:
            logging.getLogger().setLevel(logging.DEBUG)
        else:
            logging.getLogger().setLevel(logging.INFO)

    # See if a log file is set (command line overrides this)
    if ARGS.log is None and 'logfile' in config:
        log_file = logging.FileHandler(config['logfile'])

        log_file.setFormatter(
            logging.Formatter(
                fmt=
                '[%(asctime)s] %(name)-12s :: %(levelname)-8s : %(message)s',
                datefmt='%m-%d-%Y %H:%M:%S'))

        logging.getLogger().addHandler(log_file)

    logger.debug('Configuration file loaded.')

    # Ensure the user has set a browser
    if not config or 'browser' not in config or config['browser'] not in [
            'firefox', 'iceweasel', 'chrome', 'opera'
    ]:
        logger.error(
            'Configuration option "browser" must be one of: firefox, iceweasel, chrome, opera'
        )
        return False

    logger.debug('Browser set to "%s"', config['browser'])

    # Get our delay
    if 'delay' not in config:
        logger.warn('No delay configured, defaulting to 15 seconds')
        config['delay'] = 15

    if not isinstance(config['delay'], (int, long)) or config['delay'] <= 0:
        logger.warn(
            'Delay is not a whole, positive number, defaulting to 15 seconds')
        config['delay'] = 15

    # Ensure we have some dashboards and URLs
    if 'dashboards' not in config or not isinstance(
            config['dashboards'], list) or len(config['dashboards']) <= 0:
        logger.error('No dashboards defined')
        return False

    # Check if the browser is already running
    logger.debug('Checking if browser currently running...')
    try:
        process = subprocess.check_output(["pgrep", config['browser']])

        if process != "":
            logger.error(
                "The \"%s\" browser is already running, please close and re-run DashPi.",
                config['browser'])
            return False

    except subprocess.CalledProcessError:
        logger.debug('Browser not found.')

    # Launch the browser
    logger.info("Launching %s...", config['browser'])

    if config['browser'] == 'chrome':
        browser = webdriver.Chrome()

    elif config['browser'] == 'opera':
        browser = webdriver.Opera()  # pylint: disable=redefined-variable-type

    else:
        browser = webdriver.Firefox()  # pylint: disable=redefined-variable-type

    # Rotate through URLS
    counter = 0
    total = len(config['dashboards'])

    logger.info("Beginning rotation of %d dashboards at %d second intervals",
                total, config['delay'])

    while True:
        dashboard = config['dashboards'][counter % total]

        if 'url' not in dashboard:
            logger.warning('URL missing from dashboard #%d, skipping',
                           (counter % total) + 1)
            counter += 1
            continue

        logger.info("Loading dashboard #%d: %s", (counter % total) + 1,
                    dashboard['url'])

        browser.get(dashboard['url'])

        counter += 1
        time.sleep(config['delay'])

    # Exit
    logger.debug('Exiting')
    return True
import time
import re
from selenium import webdriver

options = webdriver.ChromeOptions()
options.binary_location = "C:/Program Files/Opera/47.0.2631.80/opera.exe"
driver = webdriver.Opera(
    executable_path="C:/02_QA/Selenium/WebDriver/operadriver_2.27.exe",
    opera_options=options)
# driver = webdriver.Chrome("C:/02_QA/Selenium/WebDriver/chromedriver.exe")

driver.get("http://www.airindia.in/contact-details.htm")
doc = driver.page_source

emails = re.findall(r'>[\w.-]+@[\w.-]+', doc)
# emails = [1,2,3,4]
for email in emails:
    the_string = email[1:]
    print(the_string)

time.sleep(2)
driver.quit()
Ejemplo n.º 11
0
from selenium import webdriver
import pytest

driver = webdriver.Opera(
    executable_path="/Users/Ms/Selenium webdriver driver/operadriver")


@pytest.fixture()
def test_setup():
    global driver
    driver = webdriver.Opera(
        executable_path="/Users/Ms/Selenium webdriver driver/operadriver")
    driver.implicitly_wait(10)
    driver.maximize_window()


def test_AP():
    driver.get("http://automationpractice.com/index.php")


def teardown():
    driver.close()
    driver.quit()
    print("Test completed")
Ejemplo n.º 12
0
from selenium import webdriver

# driver = webdriver.Chrome(executable_path="C:\\chromedriver.exe")  # driver is an object of class webdriver

# driver = webdriver.Firefox(executable_path="C:\\geckodriver.exe")

driver = webdriver.Opera(executable_path="C:\\operadriver.exe")

driver.get(
    "https://www.facebook.com")  # it opens a pop up window with mentioned URL

driver.maximize_window()

print(
    driver.title)  # show the title of the website, checking it in the console

print(
    driver.current_url
)  # very useful, normally shows the mentioned URL but when hacked the give the different URL

driver.get("https://www.google.co.in"
           )  # facebook.com is changed to google.co.in in yhe same window

driver.minimize_window()

driver.back()  # back to facebook.com
driver.refresh(
)  # if any code there in second url which effect the first one, so it must refresh to get updated data

driver.close(
)  #  it closes the current window, in programing if we have to open more than one windows and then close
Ejemplo n.º 13
0
from selenium import webdriver
from selenium.webdriver.common.keys import Keys

chrome_driver_path = "E:/Python/WebDriver/chromedriver.exe"
firefox_driver_path = "E:/Python/WebDriver/geckodriver.exe"
opera_driver_path = "E:/Python/WebDriver/operadriver.exe"
# driver = webdriver.Chrome(executable_path=chrome_driver_path)
# driver = webdriver.Firefox(executable_path=firefox_driver_path)
driver = webdriver.Opera(executable_path=opera_driver_path)


# Test site
# =========
driver.get("https://secure-retreat-92358.herokuapp.com/")

# input_fname = driver.find_element_by_name("fName")
# input_lname = driver.find_element_by_name("lName")
# input_email = driver.find_element_by_name("email")
#
# input_fname.send_keys("John")
# input_lname.send_keys("Private")
# input_email.send_keys("*****@*****.**")
# input_email.submit()

# driver.find_element_by_tag_name("button").click()
# driver.find_element_by_css_selector("form button").click()

input_details = driver.find_element_by_name("fName")
input_details.send_keys("John" + Keys.TAB + "Private" + Keys.TAB + "*****@*****.**" + Keys.ENTER)

# Actual Newsletter Subscription
Ejemplo n.º 14
0
from math import ceil
import json
from selenium import webdriver
from selenium.webdriver.common.keys import Keys

driver1 = webdriver.Edge()
driver2 = webdriver.Ie()

options = webdriver.ChromeOptions()
options.binary_location = "C:\\Program Files (x86)\\Opera\\50.0.2762.67\\opera.exe"  # path to opera executable
driver3 = webdriver.Opera(options=options)
final_data = []
#final_data['Product'] = []
product_data = {}
review_title_list = []
review_text_list = []
output_file = open('data.json', 'w', encoding='utf-8')


def product_list():
    url = "https://www.flipkart.com/air-conditioners/pr?sid=j9e,abm,c54&otracker=categorytree"
    driver1.get(url)

    total_string = driver1.find_element_by_xpath(
        '//div[@class="_1JKxvj _31rYcN"]/span/span')
    page_data = str(total_string.text).split(" ")
    total_page = int(page_data[3])
    page_no = 1
    while page_no <= total_page:
        print("in while loop product list")
        temp_url = url + "&page=" + str(page_no) + "&viewType=list"
Ejemplo n.º 15
0
# URL Fornat https://assets-runtime-production-oxed-oup.avallain.net/274109_bks_MaaHL_1104_gdc15_xxcg50.pdf
from selenium import webdriver
from selenium.webdriver.chrome.options import Options

options = webdriver.ChromeOptions()
options.add_argument("--start-maximized")
options.add_argument(
    "user-data-dir=/Users/aldrin0n9/Documents/Python Projects/Profile")
driver = webdriver.Opera(
    executable_path="/Users/aldrin0n9/Documents/Python Projects/operadriver",
    options=options)

url = "https://assets-runtime-production-oxed-oup.avallain.net/274109_bks_MaaHL_1104_gdc15_xxcg50.pdf"
for x in range(1, 6):
    for y in range(1, 21):
        for z in range(100, 120):
            url = "https://assets-runtime-production-oxed-oup.avallain.net/274" + str(
                z) + "_bks_MaaHL_110" + str(x) + "_gdc" + str(
                    y) + "_xxcg50.pdf"
            driver.get(url)
            print(url)
Ejemplo n.º 16
0
def scrape(browser_driver, driver_path, email, password, output_dir, timeout):
    if browser_driver == CHROME:
        options = ChromeOptions()
        options.add_argument("--headless")
        options.add_argument("--window-size=1920,1080")

        if driver_path is None:
            driver = webdriver.Chrome(options=options)
        else:
            driver = webdriver.Chrome(executable_path=driver_path,
                                      options=options)
    elif browser_driver == FIREFOX:
        options = FirefoxOptions()
        options.add_argument("--headless")

        if driver_path is None:
            driver = webdriver.Firefox(options=options)
        else:
            driver = webdriver.Firefox(executable_path=driver_path,
                                       options=options)
    elif browser_driver == SAFARI:
        if driver_path is None:
            driver = webdriver.Safari()
        else:
            driver = webdriver.Safari(executable_path=driver_path)
    elif browser_driver == OPERA:
        if driver_path is None:
            driver = webdriver.Opera()
        else:
            driver = webdriver.Opera(executable_path=driver_path)
    else:
        raise ValueError(
            f'Browser driver has to be one of these: {", ".join(DRIVERS)}')

    # Login to LinkedIn
    driver.get("https://www.linkedin.com/login/")
    driver.find_element_by_id("username").send_keys(email)
    driver.find_element_by_id("password").send_keys(password)
    driver.find_element_by_class_name("login__form_action_container").submit()

    # Check if login is successful
    html = driver.page_source.lower()
    if any(x in html for x in
           ["we don't recognize that email", "that's not the right password"]):
        driver.quit()

        raise LoginError("Invalid login credentials")

    # Skip adding a phone number
    try:
        driver.find_element_by_css_selector(".ember-view.cp-add-phone")
        driver.find_element_by_class_name("secondary-action").click()
    except NoSuchElementException:
        pass

    # Navigate to profile page
    elem = WebDriverWait(driver, timeout).until(
        ec.presence_of_element_located(
            (By.CSS_SELECTOR,
             ".tap-target.block.link-without-hover-visited.ember-view")))
    elem.click()
    WebDriverWait(driver, timeout).until(
        ec.presence_of_element_located((By.ID, "oc-background-section")))

    # Scrape profile
    profile = {
        NAME:
        get_personal_details(driver, NAME),
        POSITION:
        get_personal_details(driver, POSITION),
        CONTACT:
        get_personal_details(driver, CONTACT, timeout),
        SUMMARY:
        get_personal_details(driver, SUMMARY),
        EXPERIENCE:
        get_background_details(driver, By.ID, "experience-section",
                               EXPERIENCE),
        EDUCATION:
        get_background_details(driver, By.ID, "education-section", EDUCATION),
        VOLUNTEERING:
        get_background_details(
            driver,
            By.CSS_SELECTOR,
            ".pv-profile-section.volunteering-section.ember-view",
            VOLUNTEERING,
        ),
        SKILLS:
        get_background_details(
            driver,
            By.CSS_SELECTOR,
            ".pv-profile-section.pv-skill-categories-section.artdeco-container-card.ember-view",
            SKILLS,
        ),
        PROJECTS:
        get_accomplishment_details(driver, PROJECTS),
        PUBLICATIONS:
        get_accomplishment_details(driver, PUBLICATIONS),
        HONORS:
        get_accomplishment_details(driver, HONORS),
        LANGUAGES:
        get_accomplishment_details(driver, LANGUAGES),
    }

    driver.quit()
    with open(os.path.join(output_dir, "profile.json"), "w") as f:
        json.dump(profile, f, indent=4)

    return profile
Ejemplo n.º 17
0
    def start_webdriver_client(self):
        capabilities = {}
        for c in self.capabilities:
            name, value = c.split(':')
            # handle integer capabilities
            if value.isdigit():
                value = int(value)
            # handle boolean capabilities
            elif value.lower() in ['true', 'false']:
                value = value.lower() == 'true'
            capabilities.update({name: value})
        if self.proxy_host and self.proxy_port:
            proxy = Proxy()
            proxy.http_proxy = '%s:%s' % (self.proxy_host, self.proxy_port)
            proxy.ssl_proxy = proxy.http_proxy
            proxy.add_to_capabilities(capabilities)
        profile = None

        if self.driver.upper() == 'REMOTE':
            capabilities.update(getattr(webdriver.DesiredCapabilities, self.browser_name.upper()))
            if json.loads(self.chrome_options) or self.extension_paths:
                capabilities = self.create_chrome_options(
                    self.chrome_options,
                    self.extension_paths).to_capabilities()
            if self.browser_name.upper() == 'FIREFOX':
                profile = self.create_firefox_profile(
                    self.firefox_preferences,
                    self.profile_path,
                    self.extension_paths)
            if self.browser_version:
                capabilities['version'] = self.browser_version
            capabilities['platform'] = self.platform.upper()
            executor = 'http://%s:%s/wd/hub' % (self.host, self.port)
            try:
                self.selenium = webdriver.Remote(command_executor=executor,
                                                 desired_capabilities=capabilities or None,
                                                 browser_profile=profile)
            except AttributeError:
                valid_browsers = [attr for attr in dir(webdriver.DesiredCapabilities) if not attr.startswith('__')]
                raise AttributeError("Invalid browser name: '%s'. Valid options are: %s" % (self.browser_name, ', '.join(valid_browsers)))

        elif self.driver.upper() == 'CHROME':
            options = None
            if self.chrome_options or self.extension_paths:
                options = self.create_chrome_options(
                    self.chrome_options,
                    self.extension_paths)
            if self.chrome_path:
                self.selenium = webdriver.Chrome(executable_path=self.chrome_path,
                                                 chrome_options=options,
                                                 desired_capabilities=capabilities or None)
            else:
                self.selenium = webdriver.Chrome(chrome_options=options,
                                                 desired_capabilities=capabilities or None)

        elif self.driver.upper() == 'FIREFOX':
            binary = self.firefox_path and FirefoxBinary(self.firefox_path) or None
            profile = self.create_firefox_profile(
                self.firefox_preferences,
                self.profile_path,
                self.extension_paths)
            self.selenium = webdriver.Firefox(
                firefox_binary=binary,
                firefox_profile=profile,
                capabilities=capabilities or None)
        elif self.driver.upper() == 'IE':
            self.selenium = webdriver.Ie()
        elif self.driver.upper() == 'OPERA':
            capabilities.update(webdriver.DesiredCapabilities.OPERA)
            self.selenium = webdriver.Opera(executable_path=self.opera_path,
                                            desired_capabilities=capabilities)
        else:
            self.selenium = getattr(webdriver, self.driver)()

        if self.event_listener is not None and not isinstance(self.selenium, EventFiringWebDriver):
            self.selenium = EventFiringWebDriver(self.selenium, self.event_listener())
Ejemplo n.º 18
0
    def __init__(self,
                 browser='ff',
                 remote_address=None,
                 driver: WebDriver = None):
        t1 = datetime.now()
        dc = {
            'platform': 'ANY',
            'browserName': 'chrome',
            'version': '',
            'javascriptEnabled': True
        }
        if driver == None:
            if remote_address is None:
                if browser == "firefox" or browser == "ff":
                    self.driver = webdriver.Firefox()
                elif browser == "headless chrome" or browser == "headless Chrome" or browser == "headless_chrome" or browser == "headless_Chrome":
                    options = Options()
                    options.add_argument('--headless')
                    options.add_argument('--disable-gpu')
                    self.driver = webdriver.Chrome(executable_path=driver_path,
                                                   options=options)
                elif browser == "chrome" or browser == "Chrome":
                    options = Options()
                    # 用于浏览器复用
                    # options.debugger_address = "127.0.0.1:9999"
                    options.add_argument("--disable-infobars")
                    options.add_argument("start-maximized")
                    options.add_argument("--disable-extensions")
                    # 1-allow;2-disable 强制打开Chrome浏览器的mic和camera权限,不需要单独点击允许或拒绝
                    options.add_experimental_option(
                        "prefs", {
                            "profile.default_content_setting_values.media_stream_mic":
                            1,
                            "profile.default_content_setting_values.media_stream_camera":
                            1,
                            "profile.default_content_setting_values.geolocation":
                            1,
                            "profile.default_content_setting_values.notifications":
                            1
                        })

                    self.driver = webdriver.Chrome(executable_path=driver_path,
                                                   options=options)
                elif browser == "internet explorer" or browser == "ie":
                    self.driver = webdriver.Ie()
                elif browser == "opera":
                    self.driver = webdriver.Opera()
                elif browser == "phantomjs":
                    self.driver = webdriver.PhantomJS()
                elif browser == "edge":
                    self.driver = webdriver.Edge()

            else:
                if browser == "RChrome":
                    self.driver = webdriver.Remote(command_executor='http://' +
                                                   remote_address + '/wd/hub',
                                                   desired_capabilities=dc)
                elif browser == "RIE":
                    dc['browserName'] = 'internet explorer'
                    self.driver = webdriver.Remote(command_executor='http://' +
                                                   remote_address + '/wd/hub',
                                                   desired_capabilities=dc)
                elif browser == "RFirefox":
                    dc['browserName'] = 'firefox'
                    dc['marionette'] = False
                    self.driver = webdriver.Remote(command_executor='http://' +
                                                   remote_address + '/wd/hub',
                                                   desired_capabilities=dc)
            try:
                self.driver.implicitly_wait(5)
                my_print("Success Start a new browser:{0} , Spend {1} seconds".
                         format(browser, (datetime.now() - t1).seconds))
            except Exception:
                raise NameError(
                    "Not found {0} browser,You can enter 'ie','ff',"
                    "'chrome','RChrome','RIe' or 'RFirefox'.".format(browser))

        else:
            self.driver = driver
Ejemplo n.º 19
0
def get_local_driver(browser_name, headless, locale_code, servername,
                     proxy_string, proxy_auth, proxy_user, proxy_pass,
                     user_agent, disable_csp, enable_ws, enable_sync,
                     use_auto_ext, no_sandbox, disable_gpu, incognito,
                     guest_mode, devtools, swiftshader, block_images,
                     user_data_dir, extension_zip, extension_dir,
                     mobile_emulator, device_width, device_height,
                     device_pixel_ratio):
    '''
    Spins up a new web browser and returns the driver.
    Can also be used to spin up additional browsers for the same test.
    '''
    downloads_path = download_helper.get_downloads_folder()
    download_helper.reset_downloads_folder()

    if browser_name == constants.Browser.FIREFOX:
        try:
            try:
                # Use Geckodriver for Firefox if it's on the PATH
                profile = _create_firefox_profile(downloads_path, locale_code,
                                                  proxy_string, user_agent,
                                                  disable_csp)
                firefox_capabilities = DesiredCapabilities.FIREFOX.copy()
                firefox_capabilities['marionette'] = True
                options = webdriver.FirefoxOptions()
                if headless:
                    options.add_argument('-headless')
                    firefox_capabilities['moz:firefoxOptions'] = ({
                        'args': ['-headless']
                    })
                if LOCAL_GECKODRIVER and os.path.exists(LOCAL_GECKODRIVER):
                    try:
                        make_driver_executable_if_not(LOCAL_GECKODRIVER)
                    except Exception as e:
                        logging.debug("\nWarning: Could not make geckodriver"
                                      " executable: %s" % e)
                elif not is_geckodriver_on_path():
                    args = " ".join(sys.argv)
                    if not ("-n" in sys.argv or "-n=" in args or args == "-c"):
                        # (Not multithreaded)
                        from seleniumbase.console_scripts import sb_install
                        sys_args = sys.argv  # Save a copy of current sys args
                        print("\nWarning: geckodriver not found!"
                              " Installing now:")
                        try:
                            sb_install.main(override="geckodriver")
                        except Exception as e:
                            print("\nWarning: Could not install geckodriver: "
                                  "%s" % e)
                        sys.argv = sys_args  # Put back the original sys args
                if "linux" in PLATFORM or not headless:
                    firefox_driver = webdriver.Firefox(
                        firefox_profile=profile,
                        capabilities=firefox_capabilities)
                else:
                    firefox_driver = webdriver.Firefox(
                        firefox_profile=profile,
                        capabilities=firefox_capabilities,
                        options=options)
            except Exception:
                profile = _create_firefox_profile(downloads_path, locale_code,
                                                  proxy_string, user_agent,
                                                  disable_csp)
                firefox_capabilities = DesiredCapabilities.FIREFOX.copy()
                firefox_driver = webdriver.Firefox(
                    firefox_profile=profile, capabilities=firefox_capabilities)
            return firefox_driver
        except Exception as e:
            if headless:
                raise Exception(e)
            return webdriver.Firefox()
    elif browser_name == constants.Browser.INTERNET_EXPLORER:
        if not IS_WINDOWS:
            raise Exception(
                "IE Browser is for Windows-based operating systems only!")
        from selenium.webdriver.ie.options import Options
        ie_options = Options()
        ie_options.ignore_protected_mode_settings = False
        ie_options.ignore_zoom_level = True
        ie_options.require_window_focus = False
        ie_options.native_events = True
        ie_options.full_page_screenshot = True
        ie_options.persistent_hover = True
        ie_capabilities = ie_options.to_capabilities()
        if LOCAL_IEDRIVER and os.path.exists(LOCAL_IEDRIVER):
            try:
                make_driver_executable_if_not(LOCAL_IEDRIVER)
            except Exception as e:
                logging.debug("\nWarning: Could not make iedriver"
                              " executable: %s" % e)
        return webdriver.Ie(capabilities=ie_capabilities)
    elif browser_name == constants.Browser.EDGE:
        try:
            chrome_options = _set_chrome_options(
                browser_name, downloads_path, headless, locale_code,
                proxy_string, proxy_auth, proxy_user, proxy_pass, user_agent,
                disable_csp, enable_ws, enable_sync, use_auto_ext, no_sandbox,
                disable_gpu, incognito, guest_mode, devtools, swiftshader,
                block_images, user_data_dir, extension_zip, extension_dir,
                servername, mobile_emulator, device_width, device_height,
                device_pixel_ratio)
            if LOCAL_EDGEDRIVER and os.path.exists(LOCAL_EDGEDRIVER):
                try:
                    make_driver_executable_if_not(LOCAL_EDGEDRIVER)
                except Exception as e:
                    logging.debug("\nWarning: Could not make edgedriver"
                                  " executable: %s" % e)
            elif not is_edgedriver_on_path():
                args = " ".join(sys.argv)
                if not ("-n" in sys.argv or "-n=" in args or args == "-c"):
                    # (Not multithreaded)
                    from seleniumbase.console_scripts import sb_install
                    sys_args = sys.argv  # Save a copy of current sys args
                    print("\nWarning: msedgedriver not found. Installing now:")
                    sb_install.main(override="edgedriver")
                    sys.argv = sys_args  # Put back the original sys args
            # For Microsoft Edge (Chromium) version 79 or lower
            return webdriver.Chrome(executable_path=LOCAL_EDGEDRIVER,
                                    options=chrome_options)
        except Exception:
            # For Microsoft Edge (Chromium) version 80 or higher
            from msedge.selenium_tools import Edge, EdgeOptions
            if LOCAL_EDGEDRIVER and os.path.exists(LOCAL_EDGEDRIVER):
                try:
                    make_driver_executable_if_not(LOCAL_EDGEDRIVER)
                except Exception as e:
                    logging.debug("\nWarning: Could not make edgedriver"
                                  " executable: %s" % e)
            edge_options = EdgeOptions()
            edge_options.use_chromium = True
            prefs = {
                "download.default_directory": downloads_path,
                "local_discovery.notifications_enabled": False,
                "credentials_enable_service": False,
                "download.prompt_for_download": False,
                "download.directory_upgrade": True,
                "safebrowsing.enabled": False,
                "safebrowsing.disable_download_protection": True,
                "profile": {
                    "password_manager_enabled": False
                }
            }
            if locale_code:
                prefs["intl.accept_languages"] = locale_code
            if block_images:
                prefs["profile.managed_default_content_settings.images"] = 2
            edge_options.add_experimental_option("prefs", prefs)
            edge_options.add_experimental_option("w3c", True)
            edge_options.add_experimental_option("useAutomationExtension",
                                                 False)
            edge_options.add_experimental_option(
                "excludeSwitches", ["enable-automation", "enable-logging"])
            if guest_mode:
                edge_options.add_argument("--guest")
            if headless:
                edge_options.add_argument("--headless")
            if mobile_emulator:
                emulator_settings = {}
                device_metrics = {}
                if type(device_width) is int and (
                        type(device_height) is int and
                    (type(device_pixel_ratio) is int)):
                    device_metrics["width"] = device_width
                    device_metrics["height"] = device_height
                    device_metrics["pixelRatio"] = device_pixel_ratio
                else:
                    device_metrics["width"] = 411
                    device_metrics["height"] = 731
                    device_metrics["pixelRatio"] = 3
                emulator_settings["deviceMetrics"] = device_metrics
                if user_agent:
                    emulator_settings["userAgent"] = user_agent
                edge_options.add_experimental_option("mobileEmulation",
                                                     emulator_settings)
                edge_options.add_argument("--enable-sync")
            edge_options.add_argument("--disable-infobars")
            edge_options.add_argument("--disable-save-password-bubble")
            edge_options.add_argument("--disable-single-click-autofill")
            edge_options.add_argument(
                "--disable-autofill-keyboard-accessory-view[8]")
            edge_options.add_argument("--disable-translate")
            if not enable_ws:
                edge_options.add_argument("--disable-web-security")
            edge_options.add_argument("--homepage=about:blank")
            edge_options.add_argument("--dns-prefetch-disable")
            edge_options.add_argument("--dom-automation")
            edge_options.add_argument("--disable-hang-monitor")
            edge_options.add_argument("--disable-prompt-on-repost")
            if proxy_string:
                edge_options.add_argument('--proxy-server=%s' % proxy_string)
            edge_options.add_argument("--test-type")
            edge_options.add_argument("--log-level=3")
            edge_options.add_argument("--no-first-run")
            edge_options.add_argument("--ignore-certificate-errors")
            if devtools and not headless:
                edge_options.add_argument("--auto-open-devtools-for-tabs")
            edge_options.add_argument("--allow-file-access-from-files")
            edge_options.add_argument("--allow-insecure-localhost")
            edge_options.add_argument("--allow-running-insecure-content")
            if user_agent:
                edge_options.add_argument("--user-agent=%s" % user_agent)
            edge_options.add_argument("--no-sandbox")
            if swiftshader:
                edge_options.add_argument("--use-gl=swiftshader")
            else:
                edge_options.add_argument("--disable-gpu")
            if "linux" in PLATFORM:
                edge_options.add_argument("--disable-dev-shm-usage")
            capabilities = edge_options.to_capabilities()
            capabilities["platform"] = ''
            return Edge(executable_path=LOCAL_EDGEDRIVER,
                        capabilities=capabilities)
    elif browser_name == constants.Browser.SAFARI:
        arg_join = " ".join(sys.argv)
        if ("-n" in sys.argv) or ("-n=" in arg_join) or (arg_join == "-c"):
            # Skip if multithreaded
            raise Exception("Can't run Safari tests in multi-threaded mode!")
        safari_capabilities = _set_safari_capabilities()
        return webdriver.Safari(desired_capabilities=safari_capabilities)
    elif browser_name == constants.Browser.OPERA:
        try:
            if LOCAL_OPERADRIVER and os.path.exists(LOCAL_OPERADRIVER):
                try:
                    make_driver_executable_if_not(LOCAL_OPERADRIVER)
                except Exception as e:
                    logging.debug("\nWarning: Could not make operadriver"
                                  " executable: %s" % e)
            opera_options = _set_chrome_options(
                browser_name, downloads_path, headless, locale_code,
                proxy_string, proxy_auth, proxy_user, proxy_pass, user_agent,
                disable_csp, enable_ws, enable_sync, use_auto_ext, no_sandbox,
                disable_gpu, incognito, guest_mode, devtools, swiftshader,
                block_images, user_data_dir, extension_zip, extension_dir,
                servername, mobile_emulator, device_width, device_height,
                device_pixel_ratio)
            opera_options.headless = False  # No support for headless Opera
            return webdriver.Opera(options=opera_options)
        except Exception:
            return webdriver.Opera()
    elif browser_name == constants.Browser.PHANTOM_JS:
        with warnings.catch_warnings():
            # Ignore "PhantomJS has been deprecated" UserWarning
            warnings.simplefilter("ignore", category=UserWarning)
            return webdriver.PhantomJS()
    elif browser_name == constants.Browser.GOOGLE_CHROME:
        try:
            chrome_options = _set_chrome_options(
                browser_name, downloads_path, headless, locale_code,
                proxy_string, proxy_auth, proxy_user, proxy_pass, user_agent,
                disable_csp, enable_ws, enable_sync, use_auto_ext, no_sandbox,
                disable_gpu, incognito, guest_mode, devtools, swiftshader,
                block_images, user_data_dir, extension_zip, extension_dir,
                servername, mobile_emulator, device_width, device_height,
                device_pixel_ratio)
            if LOCAL_CHROMEDRIVER and os.path.exists(LOCAL_CHROMEDRIVER):
                try:
                    make_driver_executable_if_not(LOCAL_CHROMEDRIVER)
                except Exception as e:
                    logging.debug("\nWarning: Could not make chromedriver"
                                  " executable: %s" % e)
            elif not is_chromedriver_on_path():
                args = " ".join(sys.argv)
                if not ("-n" in sys.argv or "-n=" in args or args == "-c"):
                    # (Not multithreaded)
                    from seleniumbase.console_scripts import sb_install
                    sys_args = sys.argv  # Save a copy of current sys args
                    print("\nWarning: chromedriver not found. Installing now:")
                    sb_install.main(override="chromedriver")
                    sys.argv = sys_args  # Put back the original sys args
            if not headless or "linux" not in PLATFORM:
                return webdriver.Chrome(options=chrome_options)
            else:  # Running headless on Linux
                try:
                    return webdriver.Chrome(options=chrome_options)
                except Exception:
                    # Use the virtual display on Linux during headless errors
                    logging.debug("\nWarning: Chrome failed to launch in"
                                  " headless mode. Attempting to use the"
                                  " SeleniumBase virtual display on Linux...")
                    chrome_options.headless = False
                    return webdriver.Chrome(options=chrome_options)
        except Exception as e:
            if headless:
                raise Exception(e)
            if LOCAL_CHROMEDRIVER and os.path.exists(LOCAL_CHROMEDRIVER):
                try:
                    make_driver_executable_if_not(LOCAL_CHROMEDRIVER)
                except Exception as e:
                    logging.debug("\nWarning: Could not make chromedriver"
                                  " executable: %s" % e)
            return webdriver.Chrome()
    else:
        raise Exception("%s is not a valid browser option for this system!" %
                        browser_name)
Ejemplo n.º 20
0
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.support.select import Select  # verify if tag is a 'select'
from selenium.webdriver.support.ui import WebDriverWait  # makes webdrive wait page load
from selenium.webdriver.support import expected_conditions as ec  # verify if expected conditions is valid
from selenium.webdriver.opera.options import Options  # opera webdriver options
from webdriver_manager.opera import OperaDriverManager  # opera webdriver manager
import json  # manipulate JSON files
from xhtml2pdf import pisa  # to build PDF with HTML
""" get HTML content """

url = "https://www.nba.com/stats/players/traditional/?sort=PLAYER_NAME&dir=-1"  # NBA tabledata URL

option = Options()
option.headless = True  # execute without graphical interface

driver = webdriver.Opera(
    options=option)  # call the webdriver to open the browser and get the URL
#driver = webdriver.Opera(OperaDriverManager().install(), options=option) # call the webdriver - installed on cache by driver manager - to open the browser and get the URL
driver.get(url)
time.sleep(10)  # delay do get data

driver.find_element_by_xpath(
    "//div[@class='nba-stat-table']//table//thead//tr//th[@data-field='PTS']"
).click()  # emulate click to sort by poits
element = driver.find_element_by_xpath("//div[@class='nba-stat-table']//table")

html_content = element.get_attribute("outerHTML")  # html table content
""" parse to BS4 HTML structure """

soup = BeautifulSoup(html_content, features='lxml')

table = soup.find(name='table')
Ejemplo n.º 21
0
 def create_opera(self, desired_capabilities, remote_url):
     default = webdriver.DesiredCapabilities.OPERA
     if is_truthy(remote_url):
         return self._remote(default, desired_capabilities, remote_url)
     capabilities = self._combine_capabilites(default, desired_capabilities)
     return webdriver.Opera(desired_capabilities=capabilities)
Ejemplo n.º 22
0
    def start(self):
        """Starts Selenium and (optionally) starts XVFB first.

        Note:

            XVFB is typically used with headless runs. If you do not use XVFB
            and the browser you have selected has a GUI (Firefox, Chrome...)
            then your browser will launch and you will be able to view the
            test as it is being ran.

            This is particularly useful for problematic test runs or when building
            new tests.

        """
        if self.xvfb:
            try:
                print("Starting XVFB display...")
                self.display = Xvfb(width=self.width,
                                    height=self.height,
                                    colordepth=16)
                try:
                    self.display.start()
                except OSError:
                    self.xvfb = False
                    print(
                        "Unable to start XVFB. Try running `./build/selenium.sh`"
                    )
            except EnvironmentError:
                print("Skipping XVFB run since it is not present.")
                self.xvfb = False

        print("Starting browser ({})...".format(self.driver))

        if self.driver == "PhantomJS":
            self.browser = webdriver.PhantomJS()
        elif self.driver == "Chrome":
            self.browser = webdriver.Chrome()
        elif self.driver == "Opera":
            self.browser = webdriver.Opera()
        elif self.driver == "Ie":
            self.browser = webdriver.Ie()
        elif self.driver == "Remote":
            if isinstance(self.desired_capabilities, dict):
                dc = self.desired_capabilities
            else:
                dcu = self.desired_capabilities.upper()

                if dcu == 'IE':
                    dcu = 'INTERNETEXPLORER'

                dc = getattr(DesiredCapabilities, dcu)

            self.browser = webdriver.Remote(
                command_executor='http://127.0.0.1:4444/wd/hub',
                desired_capabilities=dc)

        elif self.driver == 'Firefox':
            # Get rid of the annoying start page by setting preferences
            fp = webdriver.FirefoxProfile()
            fp.set_preference("browser.startup.homepage_override.mstone",
                              "ignore")
            fp.set_preference("startup.homepage_welcome_url.additional",
                              "about:blank")
            self.browser = webdriver.Firefox(firefox_profile=fp)
        else:
            raise UserWarning('No valid driver detected.')
def get_local_driver(browser_name, headless, servername, proxy_string,
                     proxy_auth, proxy_user, proxy_pass, user_agent,
                     disable_csp, enable_sync, use_auto_ext, no_sandbox,
                     disable_gpu, incognito, guest_mode, devtools,
                     user_data_dir, extension_zip, extension_dir,
                     mobile_emulator, device_width, device_height,
                     device_pixel_ratio):
    '''
    Spins up a new web browser and returns the driver.
    Can also be used to spin up additional browsers for the same test.
    '''
    downloads_path = download_helper.get_downloads_folder()
    download_helper.reset_downloads_folder()

    if browser_name == constants.Browser.FIREFOX:
        try:
            try:
                # Use Geckodriver for Firefox if it's on the PATH
                profile = _create_firefox_profile(downloads_path, proxy_string,
                                                  user_agent, disable_csp)
                firefox_capabilities = DesiredCapabilities.FIREFOX.copy()
                firefox_capabilities['marionette'] = True
                options = webdriver.FirefoxOptions()
                if headless:
                    options.add_argument('-headless')
                    firefox_capabilities['moz:firefoxOptions'] = ({
                        'args': ['-headless']
                    })
                if LOCAL_GECKODRIVER and os.path.exists(LOCAL_GECKODRIVER):
                    try:
                        make_driver_executable_if_not(LOCAL_GECKODRIVER)
                    except Exception as e:
                        logging.debug("\nWarning: Could not make geckodriver"
                                      " executable: %s" % e)
                elif not is_geckodriver_on_path():
                    args = " ".join(sys.argv)
                    if not ("-n" in sys.argv or "-n=" in args or args == "-c"):
                        # (Not multithreaded)
                        from seleniumbase.console_scripts import sb_install
                        sys_args = sys.argv  # Save a copy of current sys args
                        print("\nWarning: geckodriver not found!"
                              " Installing now:")
                        try:
                            sb_install.main(override="geckodriver")
                        except Exception as e:
                            print("\nWarning: Could not install geckodriver: "
                                  "%s" % e)
                        sys.argv = sys_args  # Put back the original sys args
                if "linux" in PLATFORM or not headless:
                    firefox_driver = webdriver.Firefox(
                        firefox_profile=profile,
                        capabilities=firefox_capabilities)
                else:
                    firefox_driver = webdriver.Firefox(
                        firefox_profile=profile,
                        capabilities=firefox_capabilities,
                        options=options)
            except Exception:
                profile = _create_firefox_profile(downloads_path, proxy_string,
                                                  user_agent, disable_csp)
                firefox_capabilities = DesiredCapabilities.FIREFOX.copy()
                firefox_driver = webdriver.Firefox(
                    firefox_profile=profile, capabilities=firefox_capabilities)
            return firefox_driver
        except Exception as e:
            if headless:
                raise Exception(e)
            return webdriver.Firefox()
    elif browser_name == constants.Browser.INTERNET_EXPLORER:
        if not IS_WINDOWS:
            raise Exception(
                "IE Browser is for Windows-based operating systems only!")
        from selenium.webdriver.ie.options import Options
        ie_options = Options()
        ie_options.ignore_protected_mode_settings = False
        ie_options.ignore_zoom_level = True
        ie_options.require_window_focus = False
        ie_options.native_events = True
        ie_options.full_page_screenshot = True
        ie_options.persistent_hover = True
        ie_capabilities = ie_options.to_capabilities()
        if LOCAL_IEDRIVER and os.path.exists(LOCAL_IEDRIVER):
            try:
                make_driver_executable_if_not(LOCAL_IEDRIVER)
            except Exception as e:
                logging.debug("\nWarning: Could not make iedriver"
                              " executable: %s" % e)
        return webdriver.Ie(capabilities=ie_capabilities)
    elif browser_name == constants.Browser.EDGE:
        try:
            chrome_options = _set_chrome_options(
                downloads_path, headless, proxy_string, proxy_auth, proxy_user,
                proxy_pass, user_agent, disable_csp, enable_sync, use_auto_ext,
                no_sandbox, disable_gpu, incognito, guest_mode, devtools,
                user_data_dir, extension_zip, extension_dir, servername,
                mobile_emulator, device_width, device_height,
                device_pixel_ratio)
            if LOCAL_EDGEDRIVER and os.path.exists(LOCAL_EDGEDRIVER):
                try:
                    make_driver_executable_if_not(LOCAL_EDGEDRIVER)
                except Exception as e:
                    logging.debug("\nWarning: Could not make edgedriver"
                                  " executable: %s" % e)
            elif not is_edgedriver_on_path():
                args = " ".join(sys.argv)
                if not ("-n" in sys.argv or "-n=" in args or args == "-c"):
                    # (Not multithreaded)
                    from seleniumbase.console_scripts import sb_install
                    sys_args = sys.argv  # Save a copy of current sys args
                    print("\nWarning: msedgedriver not found. Installing now:")
                    sb_install.main(override="edgedriver")
                    sys.argv = sys_args  # Put back the original sys args
            return webdriver.Chrome(executable_path=LOCAL_EDGEDRIVER,
                                    options=chrome_options)
        except Exception as e:
            if headless:
                raise Exception(e)
            if LOCAL_EDGEDRIVER and os.path.exists(LOCAL_EDGEDRIVER):
                try:
                    make_driver_executable_if_not(LOCAL_EDGEDRIVER)
                except Exception as e:
                    logging.debug("\nWarning: Could not make edgedriver"
                                  " executable: %s" % e)
            return webdriver.Chrome(executable_path=LOCAL_EDGEDRIVER)
    elif browser_name == constants.Browser.SAFARI:
        arg_join = " ".join(sys.argv)
        if ("-n" in sys.argv) or ("-n=" in arg_join) or (arg_join == "-c"):
            # Skip if multithreaded
            raise Exception("Can't run Safari tests in multi-threaded mode!")
        safari_capabilities = _set_safari_capabilities()
        return webdriver.Safari(desired_capabilities=safari_capabilities)
    elif browser_name == constants.Browser.OPERA:
        if LOCAL_OPERADRIVER and os.path.exists(LOCAL_OPERADRIVER):
            try:
                make_driver_executable_if_not(LOCAL_OPERADRIVER)
            except Exception as e:
                logging.debug("\nWarning: Could not make operadriver"
                              " executable: %s" % e)
        return webdriver.Opera()
    elif browser_name == constants.Browser.PHANTOM_JS:
        with warnings.catch_warnings():
            # Ignore "PhantomJS has been deprecated" UserWarning
            warnings.simplefilter("ignore", category=UserWarning)
            return webdriver.PhantomJS()
    elif browser_name == constants.Browser.GOOGLE_CHROME:
        try:
            chrome_options = _set_chrome_options(
                downloads_path, headless, proxy_string, proxy_auth, proxy_user,
                proxy_pass, user_agent, disable_csp, enable_sync, use_auto_ext,
                no_sandbox, disable_gpu, incognito, guest_mode, devtools,
                user_data_dir, extension_zip, extension_dir, servername,
                mobile_emulator, device_width, device_height,
                device_pixel_ratio)
            if LOCAL_CHROMEDRIVER and os.path.exists(LOCAL_CHROMEDRIVER):
                try:
                    make_driver_executable_if_not(LOCAL_CHROMEDRIVER)
                except Exception as e:
                    logging.debug("\nWarning: Could not make chromedriver"
                                  " executable: %s" % e)
            elif not is_chromedriver_on_path():
                args = " ".join(sys.argv)
                if not ("-n" in sys.argv or "-n=" in args or args == "-c"):
                    # (Not multithreaded)
                    from seleniumbase.console_scripts import sb_install
                    sys_args = sys.argv  # Save a copy of current sys args
                    print("\nWarning: chromedriver not found. Installing now:")
                    sb_install.main(override="chromedriver")
                    sys.argv = sys_args  # Put back the original sys args
            return webdriver.Chrome(options=chrome_options)
        except Exception as e:
            if headless:
                raise Exception(e)
            if LOCAL_CHROMEDRIVER and os.path.exists(LOCAL_CHROMEDRIVER):
                try:
                    make_driver_executable_if_not(LOCAL_CHROMEDRIVER)
                except Exception as e:
                    logging.debug("\nWarning: Could not make chromedriver"
                                  " executable: %s" % e)
            return webdriver.Chrome()
    else:
        raise Exception("%s is not a valid browser option for this system!" %
                        browser_name)
Ejemplo n.º 24
0
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from time import sleep
import sys

name = sys.argv[1]

driver = webdriver.Opera(executable_path='./operadriver.exe')
driver.get('https://events.webinar.ru/19563399/3590720')

form_element = driver.find_element_by_id('name')
form_element.send_keys(name)
form_element.send_keys(u'\ue007')

element = WebDriverWait(driver, 15).until(
    EC.presence_of_element_located(
        (By.CLASS_NAME, "Reaction__rippleContainer___gaQaA")))

hot = driver.find_elements_by_class_name(
    "Reaction__rippleContainer___gaQaA")[0]
for i in range(400):
    hot.click()
    sleep(.1)
Ejemplo n.º 25
0
    def getWebDriverInstance(self):
        """
        Get WebDriver Instance based on the browser configuration
        Returns:
            'WebDriver Instance'
        """

        strver = 'version'
        if self.browser == "iexplorer" or self.browser == "ie" or self.browser == "IE":
            # Set IE driver
            iedriverserver = r'C:\tools\Python36\Scripts\IEDriverServer_x64_2.42.0.exe'
            # iedriverserver = r'C:\tools\Python36\Scripts\IEDriverServer_x64_3.12.0.exe' ## not working
            # iedriverserver = r'C:\tools\Python36\Scripts\IEDriverServer_x32_3.4.0.exe'  ## work but 32bit
            driver = webdriver.Ie(iedriverserver)
        elif self.browser == 'safari':  ### Safari not working on Windows - need Safari 10 on OSX El Capitan
            safaridriver = r'C:\tools\Python36\Scripts\SafariDriver.exe'
            driver = webdriver.Safari(safaridriver)
        elif self.browser == 'opera':
            # OperaDriver - win64 2.36 - https://github.com/operasoftware/operachromiumdriver/releases
            _operaDriverLoc = r'C:\tools\Python36\Scripts\operadriver_win64_2.36.exe'
            # Opera browser # Version:	53.0.2907.68  # System:	Windows 7 64-bit
            _operaExeLoc = r'C:\Program Files\Opera\53.0.2907.68\opera.exe'
            from selenium.webdriver.common import desired_capabilities as operacapabilities
            from selenium.webdriver.opera import options as operaoptions
            _operaCaps = operacapabilities.DesiredCapabilities.OPERA.copy()
            _operaOpts = operaoptions.ChromeOptions()
            _operaOpts._binary_location = _operaExeLoc
            # driver = webdriver.Chrome(executable_path = _operaDriverLoc, chrome_options = _operaOpts, desired_capabilities = _operaCaps)
            driver = webdriver.Opera(executable_path=_operaDriverLoc,
                                     options=_operaOpts,
                                     desired_capabilities=_operaCaps)
        elif self.browser == "firefox" or self.browser == "ff":
            driver = webdriver.Firefox()
            strver = 'browserVersion'
        elif self.browser == "chrome":
            # Set chrome driver
            chromedriver = r'C:\tools\Python36\Scripts\chromedriver.exe'
            #os.environ["webdriver.chrome.driver"] = chromedriver
            chrome_options = webdriver.ChromeOptions()
            # chrome_options.add_argument('--disable-extensions')
            #chrome_options.add_argument('--profile-directory=Default')
            chrome_options.add_argument("--incognito")
            # chrome_options.add_argument("--disable-plugins-discovery")
            # chrome_options.add_argument("--start-maximized")
            driver = webdriver.Chrome(chromedriver,
                                      chrome_options=chrome_options)
            #driver.set_window_size(1440, 900)
        elif self.browser == "headless" or self.browser == "nobrowser" or self.browser == "virtual":
            # This is for running without open Browser UI display - good for Jenkins
            chromedriver = r'C:\tools\Python36\Scripts\chromedriver.exe'
            chrome_options = webdriver.ChromeOptions()
            # chrome_options.add_argument('--disable-extensions')
            chrome_options.add_argument("--incognito")
            # chrome_options.add_argument("--disable-plugins-discovery")
            # chrome_options.add_argument("--start-maximized")
            chrome_options.add_argument('--headless')
            chrome_options.add_argument("--proxy-server='direct://'")
            chrome_options.add_argument("--proxy-bypass-list=*")
            driver = webdriver.Chrome(chromedriver,
                                      chrome_options=chrome_options)
        else:
            driver = webdriver.Firefox()
            strver = 'browserVersion'

        # Setting Driver Implicit Time out for An Element
        driver.implicitly_wait(3)

        # Maximize the window
        # driver.maximize_window()
        print('Browser version ( ' + driver.name + ' ) = ' +
              driver.capabilities[strver])

        return driver
Ejemplo n.º 26
0
 def create_opera(self, desired_capabilities, remote_url):
     if is_truthy(remote_url):
         defaul_caps = webdriver.DesiredCapabilities.OPERA.copy()
         desired_capabilities = self._remote_capabilities_resolver(desired_capabilities, defaul_caps)
         return self._remote(desired_capabilities, remote_url)
     return webdriver.Opera(**desired_capabilities)
Ejemplo n.º 27
0
 def __init__(self, browser='ff', headless=False, remoteAddress=None):
     """
     remote consle:
     dr = PySelenium('RChrome','127.0.0.1:8080')
     """
     t1 = time.time()
     dc = {
         'platform': 'ANY',
         'browserName': 'chrome',
         'version': '',
         'javascriptEnabled': True}
     dr = None
     # 设置日志路径
     geckodriver_log_path = globalparam.log_path
     logname_geckodriver = os.path.join(
         geckodriver_log_path, 'geckodriver_' + '{0}.log'.format(
             time.strftime('%Y-%m-%d')))
     if remoteAddress is None:
         if browser == "firefox" or browser == "ff":
             if headless:
                 firfox_option = webdriver.FirefoxOptions()
                 firfox_option.add_argument("--headless")  # 设置火狐为headless无界面模式
                 firfox_option.add_argument("--disable-gpu")
                 dr = webdriver.Firefox(
                     service_log_path=logname_geckodriver,
                     options=firfox_option)
             else:
                 dr = webdriver.Firefox(
                     service_log_path=logname_geckodriver)
         elif browser == "chrome" or browser == "Chrome":
             if headless:
                 chrome_options = webdriver.ChromeOptions()
                 chrome_options.add_argument("--headless")# 设置chrome为headless无界面模式
                 chrome_options.add_argument("--disable-gpu")
                 dr = webdriver.Chrome(chrome_options=chrome_options)
             else:
                 dr = webdriver.Chrome()
         elif browser == "internet explorer" or browser == "ie":
             dr = webdriver.Ie()
         elif browser == "opera":
             dr = webdriver.Opera()
         elif browser == "phantomjs":
             dr = webdriver.PhantomJS()
         elif browser == "edge":
             dr = webdriver.Edge()
     else:
         if browser == "RChrome":
             dr = webdriver.Remote(
                 command_executor='http://' +
                 remoteAddress +
                 '/wd/hub',
                 desired_capabilities=dc)
         elif browser == "RIE":
             dc['browserName'] = 'internet explorer'
             dr = webdriver.Remote(
                 command_executor='http://' +
                 remoteAddress +
                 '/wd/hub',
                 desired_capabilities=dc)
         elif browser == "RFirefox":
             dc['browserName'] = 'firefox'
             dc['marionette'] = False
             dr = webdriver.Remote(
                 command_executor='http://' +
                 remoteAddress +
                 '/wd/hub',
                 desired_capabilities=dc)
     try:
         self.driver = dr
         self.my_print(
             "{0} Start a new browser: {1}, Spend {2} seconds".format(
                 success, browser, time.time() - t1))
     except Exception:
         raise NameError(
             "Not found {0} browser,You can enter 'ie','ff',"
             "'chrome','RChrome','RIe' or 'RFirefox'.".format(browser))
Ejemplo n.º 28
0
 def open_browser(self):
     self.d = webdriver.Opera(options=self.options)
Ejemplo n.º 29
0
from selenium import webdriver
import time
from selenium.webdriver.common.by import By
from selenium.webdriver.common.action_chains import ActionChains

try:
    #ссылка на вход и драйвер
    link = "http://web01/Energy_test/Account/Login"
    browser = webdriver.Opera()
    browser.get(link)
    browser.maximize_window()

    #ввод логина
    lg_element = browser.find_element_by_id("UserName")
    lg_element.send_keys("bel_pnpo")

    #ввод пароля
    ps_element = browser.find_element_by_id("Password")
    ps_element.send_keys("Qwerty12345")

    #нажимаем кнопку "Вход"
    button = browser.find_element_by_id("btnSignIn")
    button.click()

    #Выбираем программу 2020-2024
    combo_prog_name = browser.find_element_by_id("combo_prog_name")
    combo_prog_name.click()
    time.sleep(5)
    prog20_button = browser.find_element_by_xpath(
        "/html/body/div[1]/div[1]/div[1]/div/ul/li[6]/span")
    prog20_button.click()
Ejemplo n.º 30
0
    def getWebDriverInstance(self, baseURL):
        """
        Get WebDriver Instance based on the browser configuration
        Returns:
            'WebDriver Instance'
        """
        # strver = 'version'
        strver = 'browserVersion'
        driver_name = 'unknown'
        driver_version = 'unknown'
        if self.browser == "iexplorer" or self.browser == "ie" or self.browser == "IE":
            # Set IE driver
            iedriverserver = r'C:\tools\Python36\Scripts\IEDriverServer_x64_2.42.0.exe'
            # iedriverserver = r'C:\tools\Python36\Scripts\IEDriverServer_x64_3.12.0.exe' ## not working
            # iedriverserver = r'C:\tools\Python36\Scripts\IEDriverServer_x32_3.4.0.exe'  ## work but 32bit
            driver = webdriver.Ie(iedriverserver)
        elif self.browser == 'safari':  ### Safari not working on Windows - need Safari 10 on OSX El Capitan
            safaridriver = r'C:\tools\Python36\Scripts\SafariDriver.exe'
            driver = webdriver.Safari(safaridriver)
        elif self.browser == 'opera':
            # OperaDriver - win64 2.36 - https://github.com/operasoftware/operachromiumdriver/releases
            from os import listdir
            from selenium.webdriver.common import desired_capabilities as operacapabilities
            from selenium.webdriver.opera import options as operaoptions
            # OperaDriver - win64 2.36 - https://github.com/operasoftware/operachromiumdriver/releases
            _operaDriverLoc = r'C:\tools\Python36\Scripts\operadriver_win64_2.36.exe'
            # Opera browser
            _operaInstDir = r'C:\Program Files\Opera\\'
            listOperaDir = listdir(_operaInstDir)
            listOperaVer = [
                char for char in listOperaDir
                if char[0].isdigit() and char[-1].isdigit()
            ]
            # listOperaVer.sort(key=lambda version: [int(ver) for ver in version.split('.')])
            listOperaVer.sort()
            _operacurrentversion = listOperaVer[-1]
            _operaExeLoc = _operaInstDir + _operacurrentversion + r'\opera.exe'
            _operaCaps = operacapabilities.DesiredCapabilities.OPERA.copy()
            _operaOpts = operaoptions.ChromeOptions()
            _operaOpts._binary_location = _operaExeLoc
            # driver = webdriver.Chrome(executable_path = _operaDriverLoc, chrome_options = _operaOpts, desired_capabilities = _operaCaps)
            driver = webdriver.Opera(executable_path=_operaDriverLoc,
                                     options=_operaOpts,
                                     desired_capabilities=_operaCaps)
            driver_name = 'opera'
            driver_version = _operacurrentversion
        elif self.browser == "firefox" or self.browser == "ff":
            driver = webdriver.Firefox()
            # strver = 'browserVersion'
        elif self.browser == "headless" or self.browser == "nobrowser" or self.browser == "virtual":
            # This is for running without open Browser UI display - good for Jenkins
            chromedriverpath = r'C:\tools\python3\Scripts\chromedriver.exe'
            chrome_options = webdriver.ChromeOptions()
            # chrome_options.add_argument('--disable-extensions')
            chrome_options.add_argument("--incognito")
            # chrome_options.add_argument("--disable-plugins-discovery")
            # chrome_options.add_argument("--start-maximized")
            chrome_options.add_argument('--headless')
            chrome_options.add_argument("--proxy-server='direct://'")
            chrome_options.add_argument("--proxy-bypass-list=*")
            driver = webdriver.Chrome(chromedriverpath, options=chrome_options)
        else:
            # Set chrome driver
            # self.browser == "chrome":
            chromedriverpath = r'C:\tools\python3\Scripts\chromedriver.exe'
            #os.environ["webdriver.chrome.driver"] = chromedriverpath
            chrome_options = webdriver.ChromeOptions()
            # chrome_options.add_argument('--disable-extensions')
            #chrome_options.add_argument('--profile-directory=Default')
            chrome_options.add_argument("--incognito")
            # chrome_options.add_argument("--disable-plugins-discovery")
            # chrome_options.add_argument("--start-maximized")
            driver = webdriver.Chrome(chromedriverpath, options=chrome_options)
            #driver.set_window_size(1440, 900)

        # dah jadikan default browser = chrome
        # else:
        #    driver = webdriver.Firefox()
        #    strver = 'browserVersion'

        # Setting Driver Implicit Time out for An Element
        driver.implicitly_wait(10)

        # Maximize the window
        if driver.name == 'chrome' and driver_name == 'unknown':
            driver.maximize_window()

        # Loading browser with App URL
        driver.get(baseURL)

        if driver_name != 'unknown':
            print('Browser version ( ' + str(driver_name) + ' ) = ' +
                  str(driver_version))
        else:
            print('Browser version ( ' + driver.name + ' ) = ' +
                  driver.capabilities[strver])

        return driver