def edge(headless=True):
    options = EdgeOptions()
    options.use_chromium = True
    options.headless = headless
    edge_driver = EdgeChromiumDriverManager().install()
    driver = Edge(edge_driver, options=options)
    return driver
Beispiel #2
0
    def SetUpEdge(self):
        """Product name: Microsoft WebDriver Product version 83.0.478.58 
        * Edge gets wordy when it's headless, but at least it's working (by setting window size)
        * At the time of this refactor for Selenium 4, Edge does not yet support the new API, so I'm using the legacy one"""
        options = EdgeOptions()
        options.use_chromium = True
        #EdgeOptions.AddArguments("headless")  # this version of selenium doesn't have addarguments for edge
        options.headless = True  # I got this to work by setting the handler window size

        try:
            handler = Edge(executable_path=Path(self.handler_path +
                                                'msedgedriver.exe'),
                           options=options)
            handler.set_window_size(
                1600, 1200
            )  # set the browser handler window size so that headless will work with sendkeys
            logging.info(
                f"{datetime.now(tz=None)} Info {self.browse} browser handler found"
            )
        except (WebDriverException):
            logging.info(
                f"{datetime.now(tz=None)} Warning {self.browse} browser handler not found or failed to launch."
            )
            handler = None
        return handler  # ignore the handshake errors
 def get_driver(browser, headless_mode=False) -> EventFiringWebDriver:
     if browser == "chrome":
         options = webdriver.ChromeOptions()
         options.add_argument("start-maximized")
         if headless_mode is True:
             options.add_argument("--headless")
         driver = EventFiringWebDriver(
             webdriver.Chrome(ChromeDriverManager().install(),
                              options=options), WebDriverListener())
         return driver
     elif browser == "firefox":
         options = webdriver.FirefoxOptions()
         if headless_mode is True:
             options.headless = True
         driver = EventFiringWebDriver(
             webdriver.Firefox(
                 executable_path=GeckoDriverManager().install(),
                 options=options), WebDriverListener())
         return driver
     elif browser == "edge":
         options = EdgeOptions()
         options.use_chromium = True
         if headless_mode is True:
             options.headless = True
         driver_path = EdgeChromiumDriverManager().install()
         driver = EventFiringWebDriver(
             Edge(executable_path=driver_path, options=options),
             WebDriverListener())
         return driver
     raise Exception("Provide valid driver name")
Beispiel #4
0
def edge_builder(headless=False, **kwargs):
    edge_options = EdgeOptions()
    edge_options.use_chromium = True
    if headless:
        edge_options.headless = True
    service_log_path = f"{LOG_DIR}/edge_driver.log"
    driver = webdriver.Edge(edge_options, service_log_path=service_log_path)
    return driver
Beispiel #5
0
def openEdgeBrowser(webDriverLocation: str, showBrowser: bool) -> webdriver:
    print("打开Edge浏览器!")
    option = EdgeOptions()
    # 开启无头模式.
    if not showBrowser:
        option.use_chromium = True
        option.headless = True
    browser = Edge(executable_path=webDriverLocation, options=option)
    return browser
Beispiel #6
0
def extract_element():
    options = EdgeOptions()
    options.headless = True
    options.use_chromium = True

    driver = Edge(executable_path=configs.msedge_driver_executable_path,
                  options=options)
    driver.get(configs.home_page_url)
    time.sleep(4)

    element = driver.find_element_by_xpath(configs.html_image_element)
    html = element.get_attribute('outerHTML')
    driver.quit()
    return html
    def edge(self, sign_test: bool):
        edge_webriver = self.msedge_path()
        save_folder = self.save_folder()
        extensions = self.extensions_path()

        options = EdgeOptions()

        if sign_test == False:
            options.headless = True
        else:
            options.add_extension(extension=extensions)
        options.use_chromium = True
        options.add_experimental_option(
            "prefs", {"download.default_directory": save_folder})

        return Edge(executable_path=edge_webriver, options=options)
Beispiel #8
0
def wa_login(isHeadless=True):
    '''
    Use to login to Whatsapp Web
    
    Can omit usage if already logged in once by scanning QR

    Parameters
    ----------
    None

    Returns
    -------
    None
    '''
    options = EdgeOptions()
    options.use_chromium = True     #Uses chromium-based edgium, remove to use legacy edge
    options.add_argument("user-data-dir="+os.getcwd()+"\\Cache")
    options.add_argument("user-agent=Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.96 Safari/537.36 Edg/88.0.705.49")
    options.add_experimental_option('excludeSwitches', ['enable-logging'])
    # options.add_experimental_option("excludeSwitches", ["enable-automation"])
    # options.add_experimental_option("useAutomationExtension", False)
    options.headless = isHeadless   #Headless mode
    global driver
    driver = Edge(EdgeChromiumDriverManager().install(),options=options)
    driver.get('https://web.whatsapp.com/')
    if os.path.isfile('./Cache/wa.exists'):
        return
    else:
        pass
    wait_for_load('_1PTz1')
    driver.execute_script("""
    var element1 = document.querySelector("._3DgtU");
    var element2 = document.querySelector("._1iKcN");
    if (element1)
        element1.parentNode.removeChild(element1);
    if (element2)
        element2.parentNode.removeChild(element2);
    """)
    Image.open(BytesIO(driver.find_element_by_class_name('landing-main').screenshot_as_png)).show()
    with open('Cache/wa.exists','w') as file:
        pass
Beispiel #9
0
def webDriverConfig(agent):
    driver_path = 'msedgedriver.exe'
    #options to make selenium faster
    prefs = {
        'profile.default_content_setting_values': {
            'images': 2,
            'plugins': 2,
            'popups': 2,
            'geolocation': 2,
            'notifications': 2,
            'auto_select_certificate': 2,
            'fullscreen': 2,
            'mouselock': 2,
            'mixed_script': 2,
            'media_stream': 2,
            'media_stream_mic': 2,
            'media_stream_camera': 2,
            'protocol_handlers': 2,
            'ppapi_broker': 2,
            'automatic_downloads': 2,
            'midi_sysex': 2,
            'push_messaging': 2,
            'ssl_cert_decisions': 2,
            'metro_switch_to_desktop': 2,
            'protected_media_identifier': 2,
            'app_banner': 2,
            'site_engagement': 2,
            'durable_storage': 2
        }
    }
    options = EdgeOptions()
    options.use_chromium = True
    options.add_argument("--start-maximized")
    options.add_argument(f"user-agent={agent}")
    options.headless = True  # comment this line to visualize page visiting
    options.add_experimental_option("prefs", prefs)

    driver = Edge(driver_path, options=options)
    return driver
Beispiel #10
0
def browser(request):
    maximized = request.config.getoption("--maximized")
    headless = request.config.getoption("--headless")
    browser = request.config.getoption("--browser")
    if browser == "chrome":
        options = webdriver.ChromeOptions()
        if headless:
            options.headless = True
        driver = webdriver.Chrome(options=options)
    if browser == "firefox":
        options = webdriver.FirefoxOptions()
        if platform.system() == "Windows":
            local_data = os.getenv('LOCALAPPDATA', None)
            options.binary_location = os.path.join(
                local_data,
                r"Mozilla Firefox\firefox.exe")
        if headless:
            options.headless = True
        driver = webdriver.Firefox(options=options)
    if browser == "edge":
        options = EdgeOptions()
        if headless:
            options.use_chromium = True
            options.headless = True
        driver = Edge(
            executable_path=r"C:/projects/drivers/MicrosoftWebDriver.exe",
            options=options
        )
    if maximized:
        driver.maximize_window()

    def fin():
        driver.quit()
        print(f'Test {request.node.name} is over')

    request.addfinalizer(fin)
    return driver
Beispiel #11
0
from msedge.selenium_tools import Edge, EdgeOptions
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as ec
from selenium.webdriver.common.by import By
from selenium import webdriver
from urllib3.exceptions import MaxRetryError
import os
import time
options = EdgeOptions()
options.use_chromium = True
options.headless = True


class Chat:
    def __init__(self):
        self.login = None
        self.password = None
        self.message = None
        self.thread = None
        self.picture = None
        self._driver = None
        self._session = None
        self._executor_url = None

        self._base_url = 'https://www.messenger.com/'
        self._initiate()

    def _initiate(self):
        try:
            with open('SessionExecutor.txt') as f:
Beispiel #12
0
def get_edge_option(config):
    options = EdgeOptions()
    options.use_chromium = True
    options.headless = config["headless"]
    return options
def create_webdriver() -> Edge:
    options = EdgeOptions()
    options.use_chromium = True
    options.headless = True
    driver = Edge(options=options)
    return driver