コード例 #1
2
    def get_driver(cls,selenium_hub,browser_type):
        driver=None
        browser_type=browser_type.lower()
        download_file_content_types = "application/octet-stream,application/vnd.ms-excel,text/csv,application/zip,application/binary"

        if browser_type=='ie':
            opt = ie_webdriver.Options()
            opt.force_create_process_api = True
            opt.ensure_clean_session = True
            opt.add_argument('-private')
            ie_capabilities = webdriver.DesiredCapabilities.INTERNETEXPLORER.copy()
            ie_capabilities.update(opt.to_capabilities())
            driver = webdriver.Remote(selenium_hub, desired_capabilities=ie_capabilities)
        elif browser_type=='firefox':
            firefox_profile=FirefoxProfile()
            # firefox_profile参数可以在火狐浏览器中访问about:config进行查看
            firefox_profile.set_preference('browser.download.folderList',2) # 0是桌面;1是“我的下载”;2是自定义
            firefox_profile.set_preference('browser.download.dir',ReadConfig().config.download_dir)
            firefox_profile.set_preference('browser.helperApps.neverAsk.saveToDisk',download_file_content_types)
            firefox_options = Firefox_Options()
            if ReadConfig().config.is_firefox_headless.lower()=='true':
                firefox_options.add_argument('--headless')
            driver = webdriver.Remote(selenium_hub, webdriver.DesiredCapabilities.FIREFOX.copy(),browser_profile=firefox_profile,options=firefox_options)
        elif browser_type=='chrome':
            chrome_options=Chrome_Options()
            prefs={'download.default_directory':ReadConfig().config.download_dir,'profile.default_content_settings.popups':0}
            chrome_options.add_experimental_option('prefs',prefs)
            if ReadConfig().config.is_chrome_headless.lower()=='true':
                chrome_options.add_argument('--headless')
            driver = webdriver.Remote(selenium_hub, webdriver.DesiredCapabilities.CHROME.copy(),options=chrome_options)
        else:
            return driver
        driver.maximize_window()
        driver.delete_all_cookies()
        return driver
コード例 #2
0
ファイル: scraper.py プロジェクト: seshashayana/image-scraper
def search_and_download(search_term: str,
                        driver_path: str,
                        target_path='./images',
                        number_images=10):
    target_folder = os.path.join(target_path,
                                 '_'.join(search_term.lower().split(' ')))

    if not os.path.exists(target_folder):
        os.makedirs(target_folder)

    if driver_path == './chromedriver':
        chrome_options = Chrome_Options()
        chrome_options.add_argument("--headless")
        with webdriver.Chrome(executable_path=driver_path,
                              options=chrome_options) as wd:
            res = fetch_image_urls(search_term,
                                   number_images,
                                   wd=wd,
                                   sleep_between_interactions=0.5)
    else:
        firefox_options = Firefox_Options()
        firefox_options.add_argument("--headless")
        with webdriver.Firefox(executable_path=driver_path,
                               options=firefox_options) as wd:
            res = fetch_image_urls(search_term,
                                   number_images,
                                   wd=wd,
                                   sleep_between_interactions=0.5)

    counter = 0
    for elem in res:
        persist_image(target_folder, elem, counter)
        counter += 1
コード例 #3
0
    def abrir_Navegador(self, URL):
        navegador = Inicializar.NAVEGADOR
        print("----------------")
        print(navegador)
        print("---------------")

        if navegador == ("CHROME"):

            options = Chrome_Options()
            options.add_argument('--start-maximized')
            self.driver = webdriver.Chrome(chrome_options=options)
            self.driver.implicitly_wait(10)
            self.dir_navegador = "CHROME"
            self.driver.get(URL)
            return self.driver

        if navegador == ("CHROME_headless"):

            options = Chrome_Options()
            options.add_argument('headless')
            options.add_argument('--start-maximized')
            options.add_argument('--lang=es')
            self.driver = webdriver.Chrome(chrome_options=options)
            self.driver.implicitly_wait(10)
            self.dir_navegador = "CHROME Headless"
            self.driver.get(URL)
            return self.driver

        if navegador == ("FIREFOX"):
            opts = FirefoxOptions()
            opts.set_preference("intl.accept_languages", "es")

            self.driver = webdriver.Firefox()

            self.driver.implicitly_wait(10)
            self.dir_navegador = "FIREFOX"
            self.driver.get(URL)
            return self.driver

        elif navegador != ("CHROME_headless") and navegador != (
                "CHROME") and navegador != ("FIREFOX"):
            print("----------------")
            print("Define el DRIVER")
            print("----------------")
            pytest.skip("Define el DRIVER")
            exit
コード例 #4
0
 def chrome_init(self, request):
     options = Chrome_Options()
     options.add_argument("--no-sandbox")
     options.add_argument("--headless")
     options.add_argument("--disable-gpu")
     options.add_argument("--remote-debugging-port=9222")
     options.add_argument("--disable-dev-shm-usage")
     print("Running chrome.")
     driver = webdriver.Chrome(options=options)
     request.cls.chrome_driver = driver
     yield
     driver.close()
コード例 #5
0
ファイル: tests.py プロジェクト: Pickausernaame/homework-4
    def setUp(self):
        self.email = "*****@*****.**"
        self.comment = "QA-228"
        self.browser = os.getenv("BROWSER")

        if self.browser == "FIREFOX":
            self.options = Firefox_Options()
            self.options.add_argument('-headless')
        else:
            self.options = Chrome_Options()
            self.options.add_argument('--headless')

        self.driver = Remote(
            command_executor="http://127.0.0.1:4444/wd/hub",
            desired_capabilities=getattr(DesiredCapabilities, self.browser).copy(),
            options=self.options
        )
        self.anonimazer = Anonimazer(self.driver)
コード例 #6
0
class GoogleChromeCompatibility(UITesting):

    selenium_server = "selenium-chrome"
    options = Chrome_Options()
    platform = 'Chrome'
コード例 #7
0
        def Login_logic(self):
            name = self.Name_LineEdit.text()
            password = self.Password_LineEdit.text()

            if len(name) == 0:
                self.show_message_single.emit('在?不填学号的吗???')
                return
            if len(password) == 0:
                self.show_message_single.emit('在?不填密码的吗???')
                return
            if not RE_match(r'^.{13}$', name):
                self.show_message_single.emit('噔   噔   咚\n学号长度不对劲???')
                return
            if not RE_match(r'^\d{13}$', name):
                self.show_message_single.emit('噔   噔   咚\n学号是只有数字的,对吧')
                return
            #密码长度4位以上
            if not RE_match(r'^.{4}.*$', password):
                self.show_message_single.emit('噔   噔   咚\n密码长度不对劲???')
                return

            try:
                url = 'http://sso.jwc.whut.edu.cn/Certification/toIndex.do'
                chrome_options = Chrome_Options()
                chrome_options.add_argument('--headless')
                chrome_options.add_argument('--disable-gpu')
                bro = Selenium_Webdriver.Chrome('./chromedriver',
                                                options=chrome_options)
                bro.get(url)
                bro.find_element_by_id('username').send_keys(name)
                bro.find_element_by_id('password').send_keys(password)
                bro.find_element_by_id('submit_id').click()

                #如果学号密码错误,点击登录按钮并不会报错,还要试一下获取网页内容,看能不能获取登录后的教务处网页,不能就是学号密码错了
                bro.find_element_by_xpath('//*[@class="main-logo"]')

            except BaseException as e:
                try:
                    #selenium扔出来的Exception是有msg属性的,但非selenium扔出来的Exception就没有,这种就说不准是咋整的报错了
                    massage = e.msg
                    if RE_search(r'您的密码安全级别过低,请进入教务系统按要求修改密码',
                                 massage) or RE_search(
                                     r'unexpected alert open', massage):
                        self.show_message_single.emit('噔   噔   咚\n学号或者密码错了???')
                        return
                    elif RE_search(
                            r'no such element: Unable to locate element: {"method":"xpath","selector":"//*[@class="main-logo"]"}',
                            massage):
                        self.show_message_single.emit('噔   噔   咚\n学号或者密码错了???')
                        return
                    elif RE_search(
                            r'unknown error: net::ERR_INTERNET_DISCONNECTED',
                            massage) or RE_search(r'unexpected alert open',
                                                  massage):
                        self.show_message_single.emit(
                            '噔   噔   咚\n网不好嘛,打不开教务处网站???')
                        return
                    else:
                        self.show_message_single.emit(
                            '噔   噔   咚\n发生了咱也搞不懂的错误,咱也不知道是咋整的,建议拜拜图灵老爷子,肯定灵(大概)???'
                        )
                        return
                #非selenium扔出来Exception
                except BaseException as e:
                    self.show_message_single.emit(
                        '噔   噔   咚\n发生了咱也搞不懂的错误,咱也不知道是咋整的,建议拜拜图灵老爷子,肯定灵(大概)???'
                    )
                    return

                finally:
                    bro.quit()
                    self.login_thread = None
                    self.Login_Button.setStyleSheet('''#Login_Button{
                                                        border: 0px;
                                                        border-radius: 20px;

                                                        width: 40px;
                                                        height: 40px;

                                                        color: rgb(255,255,255);
                                                        background: rgba(0,0,0,0.2);

                                                        font-family: 'Microsoft Yahei light';
                                                        font-size: 20px;

                                                        outline: none
                                                    }
                                                    #Login_Button:hover{
                                                        background: rgba(0,0,0,0.3);
                                                    }
                                                    #Login_Button:pressed{
                                                        background: rgba(0,0,0,0.4);
                                                    }''')

            else:
                #没报错就是登录成功了
                self.data_struct_module.login_successful_signal.emit(
                    name, password, [bro])
                self.message_window = None  #如果有没有关闭的消息窗口,就会被垃圾回收强行清理掉
コード例 #8
0
def set_selenium_local_session(
    proxy_address,
    proxy_port,
    proxy_username,
    proxy_password,
    headless_browser,
    browser_profile_path,
    disable_image_load,
    page_delay,
    chromedriver_path,
    browser_executable_path,
    logfolder,
    logger,
    chromedriver_log_level,
):
    browser = None
    err_msg = ""
    user_agent = (  # TODO: set user agent to chrome
        "Mozilla/5.0 (iPhone; CPU iPhone OS 12_1 like Mac OS X) AppleWebKit/605.1.15 "
        "(KHTML, like Gecko) FxiOS/18.1 Mobile/16B92 Safari/605.1.15")

    Settings.user_agent = user_agent
    chrome_options = Chrome_Options()

    if headless_browser:
        chrome_options.add_argument("--headless")

    # if browser_profile_path is not None:
    #     chrome_profile = webdriver.ChromeProfile(browser_profile_path)
    # else:
    #     chrome_profile = webdriver.ChromeProfile()

    if browser_executable_path is not None:
        chrome_options.binary = browser_executable_path

    # set "info" by default
    # set "trace" for debugging, development only
    chrome_options.add_argument(
        "--log-level={}".format(chromedriver_log_level))

    # set language to English
    chrome_options.add_argument("--lang={}".format('en'))
    if user_agent:
        chrome_options.add_argument("--user-agent={}".format(user_agent))

    if disable_image_load:
        # There also exists an extension for this, for further information:
        # https://stackoverflow.com/questions/28070315/python-disable-images-in-selenium-google-chromedriver
        prefs = {"profile.managed_default_content_settings.images": 2}
        chrome_options.add_experimental_option("prefs", prefs)

    if proxy_address and proxy_port:
        chrome_options.add_argument('{0}:{1}'.format(proxy_address,
                                                     proxy_port))

    chrome_options.add_argument("--mute-audio")

    #TODO: extension to hide selenium, check out browser_firefox to see how it's done
    #

    chromedriver_log = "{}chromedriver.log".format(logfolder)
    chrome_options.add_argument("--log_path={}".format(chromedriver_log))
    driver_path = chromedriver_path or get_chromedriver()
    browser = webdriver.Chrome(
        # chrome_profile=chrome_profile,
        executable_path=driver_path,
        # log_path=chromedriver_log,
        options=chrome_options)

    if proxy_username and proxy_password:
        # proxy_authentication(browser, logger, proxy_username, proxy_password)
        pass  #TODO: implement proxy_authentication

    browser.implicitly_wait(page_delay)
    try:
        browser.set_window_size(375, 812)
    except UnexpectedAlertPresentException as exc:
        logger.exception("Unexpected alert on resizing web browser!\n\t"
                         "{}".format(str(exc).encode("utf-8")))
        close_browser(browser, False, logger)
        return browser, "Unexpected alert on browser resize"

    message = "Session started!"
    highlight_print("browser", message, "initialization", "info", logger)
    browser.typeofbr = "Chrome"
    return browser, err_msg
コード例 #9
0
 def chrome():
     options = Chrome_Options()
     #options.add_argument("--headless")
     driver = webdriver.Chrome()
     return driver