예제 #1
0
def create_local_driver(config):
    driver = None
    if config["browser"] == "chrome":
        driver_manager = ChromeDriverManager()
        options = get_chrome_options(config)
        driver = webdriver.Chrome(
            executable_path=driver_manager.install(),
            options=options,
        )
    elif config["browser"] == "firefox" or "ff":
        driver_manager = GeckoDriverManager("82.0")
        options = get_firefox_options(config)
        driver = webdriver.Firefox(
            executable_path="Core/drivers/geckodriver.exe",
            options=options,
        )
    return driver
예제 #2
0
def driver(config):
    url = config['url']
    selenoid = config['selenoid']

    if not selenoid:
        manager = ChromeDriverManager(version='latest')
        driver = webdriver.Chrome(executable_path=manager.install())
    else:
        capabilities = {'browserName': "chrome", 'version': '80'}
        options = ChromeOptions()
        driver = webdriver.Remote(command_executor=selenoid,
                                  options=options,
                                  desired_capabilities=capabilities)
    driver.get(url)
    driver.maximize_window()
    yield driver
    driver.quit()
예제 #3
0
def test_chrome_manager_cached_driver_with_selenium():
    custom_path = os.path.join(os.path.dirname(os.path.dirname(__file__)),
                               "custom")
    manager = ChromeDriverManager(path=custom_path)
    driver = webdriver.Chrome(manager.install())
    driver.get("http://automation-remarks.com")

    metadata_file = os.path.join(custom_path, 'drivers.json')

    with open(metadata_file) as json_file:
        data = json.load(json_file)

    for k in data.keys():
        data[k]['timestamp'] = "08/06/2019"

    with open(metadata_file, 'w') as outfile:
        json.dump(data, outfile)

    ChromeDriverManager(path=custom_path).install()
예제 #4
0
    def __init__(self):
        chrome_options = Options()
        chrome_options.add_argument("--disable-extensions")
        # chrome_options.add_argument('--headless')
        # chrome_options.add_argument('--disable-gpu')
        chrome_options.add_argument('--disable-setuid-sandbox')
        chrome_obj = ChromeDriverManager()

        self.order_url = "https://sellercentral.amazon.in/orders-v3/order/"

        self.driver = webdriver.Chrome(executable_path=chrome_obj.install(),
                                       chrome_options=chrome_options)

        self.main_window = self.driver.current_window_handle
        self.order_details = {}

        self.wait = WebDriverWait(self.driver, 90, poll_frequency=0.1,
                                  ignored_exceptions=[NoSuchElementException, ElementNotVisibleException,
                                                      ElementNotSelectableException])
예제 #5
0
def driver(config):
    options = webdriver.ChromeOptions()
    options.add_experimental_option('prefs', {'intl.accept_languages': f'en,en-us'})
    if not config["selenoid"]:
        manager = ChromeDriverManager(version=config['version'])
        browser = webdriver.Chrome(executable_path=manager.install(), options=options)

    else:
        capabilities = {'acceptInsecureCerts': True,
                        'browserName': 'chrome',
                        'version': config['version'],
                        }
        browser = webdriver.Remote(command_executor=config['selenoid'],
                                  options=options,
                                  desired_capabilities=capabilities)

    browser.maximize_window()
    browser.get(config['url'])
    yield browser
    browser.close()
def driver(config):
    browser = config['browser']
    version = config['version']
    url = config['url']
    selenoid = config['selenoid']
    if not selenoid:
        manager = ChromeDriverManager(version=version)
        driver = webdriver.Chrome(executable_path=manager.install())
    else:
        options = ChromeOptions()
        capabilities = {'acceptInsecureCerts': True,
                        'browserName': 'chrome',
                        'version': '80.0'}
        driver = webdriver.Remote(command_executor=selenoid,
                                  options=options,
                                  desired_capabilities=capabilities)
    driver.get(url)
    driver.maximize_window()
    yield driver
    driver.close()
def driver(config):
    selenoid_server = config["selenoid"]
    if selenoid_server:
        capabilities = {
            'acceptInsecureCerts': True,
            'browserName': "chrome",
            'version': '80',
        }
        driver = webdriver.Remote(
            command_executor=f'http://{selenoid_server}/wd/hub/',
            desired_capabilities=capabilities)
    else:
        manager = ChromeDriverManager(version=config["version"])
        driver = webdriver.Chrome(
            executable_path=manager.install(),
            desired_capabilities={'acceptInsecureCerts': True})
    driver.get(config['url'])
    driver.maximize_window()
    yield driver
    driver.quit()
예제 #8
0
def load_chromedriver():
    webdriver_manager = None
    try:
        webdriver_manager = ChromeDriverManager(
            chrome_type=ChromeType.CHROMIUM)
    except:
        pass

    if webdriver_manager is None:
        try:
            webdriver_manager = ChromeDriverManager(
                chrome_type=ChromeType.GOOGLE)
        except:
            pass

    if webdriver_manager is None:
        logging.error("Failed to find chrome/chromium")
        exit(1)

    return webdriver_manager.install()
def driver(config):
    browser = config['browser']
    version = config['version']
    url = config['url']
    download_dir = config['download_dir']
    selenoid = config['selenoid']
    print(selenoid)
    if browser == 'chrome':
        options = ChromeOptions()
        if selenoid:
            capabilities = {
                'acceptInsecureCerts': True,
                'browserName': 'chrome'
            }

            driver = webdriver.Remote(command_executor=selenoid,
                                      options=options,
                                      desired_capabilities=capabilities)
        else:
            options.add_argument("--window-size=800,600")

            prefs = {"download.default_directory": download_dir}
            options.add_experimental_option('prefs', prefs)

            manager = ChromeDriverManager(version=version)
            driver = webdriver.Chrome(
                executable_path=manager.install(),
                options=options,
                desired_capabilities={'acceptInsecureCerts': True})
    else:
        raise UnsupportedBrowserException(f'Unsupported browser: "{browser}"')

    driver.get(url)
    driver.maximize_window()
    yield driver

    # quit = закрыть страницу, остановить browser driver
    # close = закрыть страницу, бинарь browser driver останется запущенным
    driver.quit()
예제 #10
0
def driver(config):
    browser = config['browser']
    version = config['version']
    url = config['url']
    download_dir = config['download_dir']
    selenoid = config['selenoid']
    window_size = config['window_size']

    if browser == 'chrome':
        options = ChromeOptions()
        if selenoid:
            capabilities = {
                'acceptInsecureCerts': True,
                'browserName': browser
            }

            driver = webdriver.Remote(command_executor=selenoid,
                                      options=options,
                                      desired_capabilities=capabilities)
        else:
            options.add_argument(f"--window-size={window_size}")

            prefs = {"download.default_directory": download_dir}
            options.add_experimental_option('prefs', prefs)

            manager = ChromeDriverManager(version=version)
            driver = webdriver.Chrome(
                executable_path=manager.install(),
                options=options,
                desired_capabilities={'acceptInsecureCerts': True})
    else:
        raise UnsupportedBrowserException(f'Unsupported browser: "{browser}"')

    driver.get(url)
    driver.maximize_window()
    yield driver

    driver.quit()
예제 #11
0
def driver(config):
    """
    Need for UI test with Chrome
    :param config: config of browser
    """
    browser = config["browser"]
    version = config['version']
    selenoid = config["selenoid"]
    url = ''

    if browser == "chrome":
        if selenoid != 'True':
            url = config["url"]
            manager = ChromeDriverManager(version=version)
            driver = webdriver.Chrome(executable_path=manager.install())
        else:
            selenoid = 'http://0.0.0.0:4444/wd/hub'
            url = config['url_sel']
            options = ChromeOptions()
            options.add_argument("--window-size=800,600")

            prefs = {"download.default_directory": '/tmp'}
            options.add_experimental_option('prefs', prefs)
            capabilities = {
                'acceptInsecureCerts': True,
                'browserName': browser,
                'version': version,
            }
            driver = webdriver.Remote(command_executor=selenoid,
                                      options=options,
                                      desired_capabilities=capabilities)
    else:
        raise NotChrome("Sorry, work only with chrome")

    driver.maximize_window()
    driver.get(url)
    yield driver
    driver.quit()
예제 #12
0
def driver(config):
    browser = config['browser']
    version = config['version']
    url = config['url']
    selenoid = config['selenoid']

    if browser == 'chrome' and selenoid == 'None':
        options = ChromeOptions()
        options.add_argument("--window-size=800,600")

        manager = ChromeDriverManager(version='latest')
        driver = webdriver.Chrome(
            executable_path=manager.install(),
            options=options,
            desired_capabilities={'acceptInsecureCerts': True})

    elif selenoid != 'None':
        options = ChromeOptions()
        options.add_argument("--window-size=800,600")

        capabilities = {
            'acceptInsecureCerts': True,
            'browserName': 'chrome',
            'version': version,
        }

        driver = webdriver.Remote(command_executor='http://' + selenoid +
                                  '/wd/hub/',
                                  options=options,
                                  desired_capabilities=capabilities)

    else:
        raise UsupportedBrowserException(f'Usupported browser: "{browser}"')

    driver.get(url)
    driver.maximize_window()
    yield driver
    driver.close()
def driver(config):
    browser = config['browser']
    version = config['version']
    url = config['url']
    selenoid = config['selenoid']

    if browser == 'chrome':
        if not selenoid:
            manager = ChromeDriverManager(version=version)
            driver = webdriver.Chrome(executable_path=manager.install())
        else:
            options = ChromeOptions()
            driver = webdriver.Remote(
                command_executor=selenoid,
                options=options,
                desired_capabilities={'acceptInsecureCerts': True})
    else:
        raise UsupportedBrowserException(f'Usupported browser: "{browser}"')

    driver.get(url)
    driver.maximize_window()
    yield driver
    driver.close()
예제 #14
0
def driver(config):
    url = config['url']
    browser = config['browser']
    version = config['version']
    selenoid = config['selenoid']
    if browser == 'chrome':
        if selenoid == 'False':
            manager = ChromeDriverManager(version=version)
            driver = webdriver.Chrome(executable_path=manager.install())
        else:
            capabilities = {
                'acceptInsecureCerts': True,
                'browserName': 'chrome',
                'version': '80.0'
            }
            driver = webdriver.Remote(command_executor=selenoid,
                                      desired_capabilities=capabilities)
    else:
        raise UnsupportedBrowserException(f'Браузер {browser} не поддерживается')
    driver.get(url)
    driver.maximize_window()
    yield driver
    driver.close()
예제 #15
0
def driver(config):
    browser = config['browser']
    version = config['version']
    selenoid = config['selenoid']
    url = config['url']
    download_dir = config['download_dir']

    if browser == 'chrome':
        options = ChromeOptions()
        options.add_argument("--window-size=800,600")

        prefs = {"download.default_directory": download_dir}
        options.add_experimental_option('prefs', prefs)

        driver = None
        if selenoid is not None:
            options.set_capability("browserVersion", version)
            driver = webdriver.Remote(
                command_executor='http://' + selenoid + '/wd/hub/',
                options=options,
                desired_capabilities={'acceptInsecureCerts': True})
        else:
            manager = ChromeDriverManager(version=version)
            driver = webdriver.Chrome(
                executable_path=manager.install(),
                options=options,
                desired_capabilities={'acceptInsecureCerts': True})

    else:
        raise UsupportedBrowserException(f'Usupported browser: "{browser}"')

    driver.get(url)
    driver.maximize_window()
    yield driver

    driver.quit()
예제 #16
0
def runtest():
    global config
    global datafile

    os.system(clearterminal)
    if config["test_type"] == "proxy" and config["proxy"] == "":
        input(
            "ERR: Cannot run proxy based test, configure proxy settings first")
        return 99

    if config["test_type"] == "pac" and config["pac"] == "":
        input("ERR: Cannot run pac based test, configure pac settings first")
        return 99

    test_label = input("Input test label: ")
    while not re.match("^.+$", test_label):
        print("ERR: Invalid input [ " + test_label + " ], try again")
        test_label = input("\nInput test label: ")

    currentDT = datetime.datetime.now()

    test_label = test_label + currentDT.strftime("(%Y-%m-%d %H:%M)")

    print("\n## Test Information ##")
    print("-----------------------\n")
    print("Label: " + test_label)
    print("Test Type: " + config["test_type"])
    if config["test_type"] == "proxy":
        print("Proxy: " + config["proxy"])
        chrome_options.add_argument("--proxy-server=" + config["proxy"])
    if config["test_type"] == "pac":
        print("Proxy: " + config["pac"])
        chrome_options.add_argument("--proxy-pac-url=" + config["pac"])
    print("Incognito Mode: " + config["incognito"])
    if re.match("^y|yes$", config["incognito"], re.IGNORECASE):
        chrome_options.add_argument("--incognito")
    print("")
    choice = input("Is the settings correct, initiate test? (y/n): ")
    while not re.match("^y|yes|n|no$", choice, re.IGNORECASE):
        print("ERR: Invalid input [ " + choice + " ], try again")
        choice = input("\nIs the settings correct, initiate test? (y/n): ")

    if str.lower(choice[0]) == "n":
        os.system(clearterminal)
        return 99

    os.system(clearterminal)
    if config["clear_storage"] == "y":
        print("Clearing Chrome Profile..")
        try:
            if os.path.exists(profile_path):
                shutil.rmtree(profile_path)
                print("Successfully removed the Chrome Profile")
            else:
                print("No existing Chrome profile found")
        except Exception as ex:
            print("Failed to delete the Chrome Profile")
        # driver.execute_script('window.localStorage.clear();')

    print("Initiating test. Loading new Chrome session")
    print(
        "NB: Do not interact with or close the script or chrome browser window until tests have been completed!\n"
    )

    try:
        mychromedriver = ChromeDriverManager(log_level=0, cache_valid_range=7)
        mychromedriverexe = mychromedriver.install()
    except requests.exceptions.SSLError as err:
        #install_cert()
        print(
            "Test Failed: SSL/TLS Interception detected, install the decryption certificate using "
            "Test Settings"
            " menu item")
        input("Press <ENTER> to continue...")
        return
    except Exception as e:
        print(e.__doc__)
        print(e.__context__)
        '''
        chrome_type = ChromeType.GOOGLE
        browser_version = chrome_version(chrome_type)
        driver_name = mychromedriver.driver.get_name()
        os_type = mychromedriver.driver.get_os_type()
        driver_version = mychromedriver.driver.get_version()

        mychromedriverexe = mychromedriver.driver_cache.find_driver(browser_version, driver_name, os_type,
                                                    driver_version)
                                                    '''
        print("Test Failed: Could not download the required chrome webdriver")
        input("Press <ENTER> to continue...")
        return

    #print(binary_path)
    #print(mychromedriverexe)

    try:
        test_detail = requests.get('http://ip-api.com/json', verify=False).text
        print("Test Detail: " + test_detail)
    except Exception as e:
        print(e.__doc__)
        print(e.__context__)

    data = []
    # Read urls from .csv file
    with open(datafile, 'r') as file:
        reader = csv.DictReader(file)

        for row in reader:
            data.append(row)
        # print(data)
        file.close()

    try:
        #driver = webdriver.Chrome(chromedriver, options=chrome_options)
        driver = webdriver.Chrome(mychromedriverexe, options=chrome_options)
        driver.set_page_load_timeout(20)  #Set page load timeout

        for row in data:
            summ = 0
            i = 0

            # GET link consecutively for number of passes
            while i < config["passes"]:

                i = i + 1

                try:
                    driver.get(row['url'])
                except TimeoutException as ex:
                    print("Timeout occurred requesting site, retrying pass")
                    i = i - 1

                    continue
                except InvalidArgumentException as ex:
                    print(
                        "ERR: Test failed, close any open Chrome browsers and re-run the test."
                    )
                    #print(ex.__doc__)
                except Exception as e:
                    print(e.__doc__)

                navigationStart = driver.execute_script(
                    "return window.performance.timing.navigationStart")
                redirectStart = driver.execute_script(
                    "return window.performance.timing.redirectStart")
                redirectEnd = driver.execute_script(
                    "return window.performance.timing.redirectEnd")
                domainLookupStart = driver.execute_script(
                    "return window.performance.timing.domainLookupStart")
                domainLookupEnd = driver.execute_script(
                    "return window.performance.timing.domainLookupEnd")
                connectStart = driver.execute_script(
                    "return window.performance.timing.connectStart")
                connectEnd = driver.execute_script(
                    "return window.performance.timing.connectEnd")
                requestStart = driver.execute_script(
                    "return window.performance.timing.requestStart")
                responseStart = driver.execute_script(
                    "return window.performance.timing.responseStart")
                responseEnd = driver.execute_script(
                    "return window.performance.timing.responseEnd")
                domLoading = driver.execute_script(
                    "return window.performance.timing.domLoading")
                domComplete = driver.execute_script(
                    "return window.performance.timing.domComplete")
                loadEventStart = driver.execute_script(
                    "return window.performance.timing.loadEventStart")
                loadEventEnd = driver.execute_script(
                    "return window.performance.timing.loadEventEnd")

                redirect_calc = redirectEnd - redirectStart
                dns_calc = domainLookupEnd - domainLookupStart
                tcp_calc = connectEnd - connectStart
                request_calc = responseStart - requestStart
                response_calc = responseEnd - responseStart
                processing_calc = domComplete - domLoading
                onload_calc = loadEventEnd - loadEventStart
                frontend_calc = domComplete - responseStart
                backend_calc = responseStart - navigationStart
                total_calc = frontend_calc + backend_calc
                summ += total_calc

            # calculate average and store in results dictionary
            row[test_label] = (int)(summ /
                                    config["passes"])  # calculate the average

            print(row)

    except NoSuchWindowException as ex:
        print("ERR: Test failed, did you close the browser window?")
        input("Press <ENTER> to continue...")
        return
    except Exception as e:
        print(e.__doc__)
        print(e.__context__)
        print("ERR: Test failed.")
        input("Press <ENTER> to continue...")
        return

    driver.quit()
    # print(data)

    # writing result metrics in file
    fields = list(data[0])

    with open(datafile, 'w') as file:
        writer = csv.DictWriter(file, fieldnames=fields, lineterminator="\n")
        writer.writeheader()
        writer.writerows(data)
        file.close()

    print(
        "Test Completed, you can now plot the data using the graph menu option."
    )
    graph_data()
예제 #17
0
from selenium import  webdriver
from selenium.webdriver.common.by import  By
from webdriver_manager.chrome import ChromeDriverManager
from webdriver_manager.firefox import GeckoDriverManager
import  time

broswerName = "chrome"

if broswerName == "chrome":
  driver= webdriver.Chrome(ChromeDriverManager.install())
elif broswerName == "firefox":
    driver = webdriver.firefox(executable_path=GeckoDriverManager.install())
else:
    print('Please select required broswer'+broswerName)
예제 #18
0
               followers.append(a)
            else:
                followers.append(i.split(' ',1))
        headers = ['Username', 'Name', 'Follow']
        with open('followers.csv','w',encoding="utf-8") as f:
            csv_writer = csv.writer(f)

            csv_writer.writerow(headers)
            csv_writer.writerows(followers)

    except FileNotFoundError:
        f = open('followers.csv','x')
        f.close()
        store_followers_details(list_followers)



if __name__ == '__main__':
    option = webdriver.ChromeOptions()
    # option.add_argument('--headless')
    option.add_argument("--log-level=3")
    option.add_experimental_option('excludeSwitches', ['enable-logging'])
    prefs = {"profile.default_content_setting_values.notifications" : 2}
    option.add_experimental_option("prefs",prefs)
    CDM = ChromeDriverManager(log_level='0')
    driver = webdriver.Chrome(CDM.install(), options=option)
    
    login_choice(driver)

    driver.quit()
예제 #19
0
from bs4 import BeautifulSoup
from selenium import webdriver
import selenium.webdriver.support.ui as ui
from webdriver_manager.chrome import ChromeDriverManager
from database import orm
import datetime
import typing
import requests

driver_manager = ChromeDriverManager()
chrome_drive_path = None

try:
    chrome_drive_path = driver_manager.install()
except:
    chrome_drive_path = driver_manager._file_manager.get_cache_path()

owner_type_name = 'site'


class Scraper:
    def get_page(self, url) -> BeautifulSoup:
        source_code = requests.get(url)
        plain_text = source_code.text
        soup = BeautifulSoup(plain_text, 'html.parser')
        return soup

    @classmethod
    def get_page_by_driver(cls, url: str,
                           wait_element_selector: str) -> BeautifulSoup:
        options = webdriver.ChromeOptions()