Ejemplo n.º 1
0
def symbol_to_frames(symbol: str, browser_object: webdriver) -> DataFrame:
    """ Takes in the symbol and returns floorsheet dataframe """
    search_url: str = f"{BASE_URL}{symbol}"
    browser_object.get(search_url)
    browser_object.implicitly_wait(IMP_DELAY)
    # Click on the nav button
    browser_object.find_element_by_id("navFloorSheet").click()
    wait()
    intent_block = browser_object.find_element_by_id(
        "ctl00_ContentPlaceHolder1_CompanyDetail1_divDataFloorsheet")
    frame_block = block_to_frame(intent_block)
    next_button = browser_object.find_element_by_xpath(
        "//a[@title='Next Page']")
    pages = []
    while get_pages(intent_block)["current_page"] <= get_pages(
            intent_block)["last_page"] and get_pages(
                intent_block)["current_page"] not in pages:
        pages.append(int(get_pages(intent_block)["current_page"]))
        next_button.click()
        wait()
        next_button = browser_object.find_element_by_xpath(
            "//a[@title='Next Page']")
        intent_block = browser_object.find_element_by_id(
            "ctl00_ContentPlaceHolder1_CompanyDetail1_divDataFloorsheet")
        inter_frame = block_to_frame(intent_block)
        frame_block = pd.concat([frame_block, inter_frame], axis=0)
    pages = []
    return frame_block
Ejemplo n.º 2
0
def download_data(browser_object: webdriver,
                  config_object: configparser.ConfigParser) -> BeautifulSoup:
    browser_object.get(config_object["rekyl_portal"]["url"])
    time.sleep(1)

    username = browser_object.find_element_by_id("username")
    password = browser_object.find_element_by_css_selector(
        "input[type=password")

    username.send_keys(config_object["rekyl_portal"]["username"])
    password.send_keys(config_object["rekyl_portal"]["password"])

    browser_object.find_element_by_id("button_login_security_low").click()

    time.sleep(3)

    show_errands = Select(browser_object.find_element_by_name("maxhits"))

    show_errands.select_by_index(10)
    time.sleep(5)
    browser_object.find_element_by_name("maxhits").send_keys(Keys.RETURN)
    time.sleep(5)

    iframe = browser_object.find_element_by_id("iframe_workorder")
    browser_object.switch_to.frame(iframe)
    iframe_source = browser_object.page_source
    soup = BeautifulSoup(iframe_source, "html.parser")

    browser_object.close()
    browser_object.quit()
    logging.info("Raw data downloaded")

    return soup
Ejemplo n.º 3
0
def solicitud_step2(driver: webdriver, context: CustomerProfile):
    # Data form:
    try:
        WebDriverWait(driver, DELAY).until(
            EC.presence_of_element_located((By.ID, "txtIdCitado")))
    except TimeoutException:
        logging.error("Timed out waiting for form to load")
        return None

    # Select doc type
    if context.doc_type == DocType.PASSPORT:
        driver.find_element_by_id("rdbTipoDocPas").send_keys(Keys.SPACE)
    elif context.doc_type == DocType.NIE:
        driver.find_element_by_id("rdbTipoDocNie").send_keys(Keys.SPACE)

    # Enter doc number and name
    element = driver.find_element_by_id("txtIdCitado")
    element.send_keys(context.doc_value, Keys.TAB, context.name, Keys.TAB,
                      context.year_of_birth)

    success = process_captcha(driver, context)
    if not success:
        return

    return True
Ejemplo n.º 4
0
def work_details_request(browser: webdriver, title: str) -> BeautifulSoup:
    wait()
    try:
        work = browser.find_element_by_link_text(title)

        # Waiting 'till link is clickable
        while True:
            try:
                work.click()
                break
            except ElementClickInterceptedException:
                continue

        requestmeter.count()
        sleep(0.5)  # This delay permits the html display entirely
        html_ = browser.page_source
        close_button = browser.find_element_by_id('gs_md_cita-d-x')
        close_button.click()
    except Exception as err:
        print("!!!>>>", title)
        print(err)

        logging_collector(
            "ERROR",
            "NOT CLICKABLE LNK",
            [
                browser.find_element_by_id('gsc_prf_in').text,  # Author
                title,  # Title
                err
            ])  # Error
        return None

    return BeautifulSoup(html_, 'html.parser')
Ejemplo n.º 5
0
def execSearch(browser: webdriver, inifile):

    # 検索ワード抽出
    browser.get(_get(inifile, 'search', 'url_trend'))
    contents = browser.find_elements_by_tag_name('h1')
    searchWords = []
    for content in contents:
        searchWords.append(content.text)
    searchWords.pop(0)
    searchWords.pop(0)

    # ログインボタンの押下(検索、メールDEポイント共通)
    browser.get(_get(inifile, 'search', 'url') + '/Web?qt=' + searchWords[0])
    searchWords.pop(0)
    browser.find_element_by_link_text(_get(inifile, 'search',
                                           'login_context')).click()

    login_user = browser.find_element_by_name(_get(inifile, 'user', 'id_name'))
    login_user.send_keys(_get(inifile, 'user', 'id'))
    login_password = browser.find_element_by_name(
        _get(inifile, 'user', 'pass_name'))
    login_password.send_keys(_get(inifile, 'user', 'pass'))
    browser.find_element_by_name("submit").click()
    sleep(_getRandomNum())

    ## 検索ワードを一つずつ処理
    for index, searchWord in enumerate(searchWords):
        search_box = browser.find_element_by_name("qt")
        search_box.clear()
        search_box.send_keys(searchWord)
        browser.find_element_by_id('searchBtn').click()
        sleep(_getRandomNum())
Ejemplo n.º 6
0
def login(driver: webdriver, orga):
    try:
        usernameMask = None
        username = None
        re1 = re.compile('/')
        sausername = re1.split(orga['usrxpath'])
        while 1:
            try:
                usernameMask = WebDriverWait(driver, 1).until(
                    EC.presence_of_element_located((By.ID, sausername[0])))
                break
            except Exception as e:
                pass
        # username = driver.find_element_by_id(orga['usrxpath'])
        usernameMask.click()
        time.sleep(0.1)
        username = driver.find_element_by_id(sausername[1])
        username.click()
        time.sleep(0.1)
        username.click()
        time.sleep(0.1)

        username.send_keys(orga['usr'])
        password = driver.find_element_by_id(orga['passxpath'])
        password.send_keys(orga['password'])
        password.send_keys(Keys.ENTER)
    except Exception as e:
        raise e
Ejemplo n.º 7
0
def download_courses(username: str, password: str, download_path: str,
                     driver: webdriver):
    wait30: ui.WebDriverWait = ui.WebDriverWait(driver, 30)

    print("LOGGING IN", flush=True)
    # Request the login page and wait for it to load
    driver.get("https://members.usegolang.com/login")
    wait30.until(lambda driver: driver.find_element_by_xpath(
        r"""//input[@id="email"]""") is not None)

    # Fill in the email and password fields, then hit enter to login
    driver.find_element_by_id("email").send_keys(username)
    driver.find_element_by_id("password").send_keys(password + "\n")

    # Wait until login finishes
    wait30.until(lambda driver: driver.find_element_by_xpath(
        r"""//small[contains(text(), "Access all of your course contents belows")]"""
    ) is not None)

    print("LOGGED IN", flush=True)
    print("DOWNLOADING MAIN LESSONS", flush=True)
    # Download all of the main lessons
    download_videos("https://members.usegolang.com/twg/lessons/lesson-{}",
                    download_path, 1, 83, driver)

    # Download all of the project lessons
    download_videos("https://members.usegolang.com/twg/projects/lesson-{}",
                    download_path, 1, 19, driver)
Ejemplo n.º 8
0
def get_suits_page(web_driver: selenium.webdriver, size, color):
    web_driver.get("https://outlet-us.suitsupply.com/en_US/home")
    form = web_driver.find_element_by_id("dwfrm_clearancelanding_code")
    form.send_keys("2020")
    button = web_driver.find_element_by_id("sendBtn")
    button.click()
    web_driver.get(
        f"https://outlet-us.suitsupply.com/en_US/c_suits?prefn1=colorID&prefv1={color}&prefn2=size&prefv2={size}")
Ejemplo n.º 9
0
def get_empty_dates(access_browser: webdriver):
    host = os.environ['HOST']
    access_browser.get(
        'https://{}/login/pc-employee/old?lang_code=ja'.format(host))
    sleep(5)

    company_id = access_browser.find_element_by_id("client_id")
    company_id.send_keys(os.environ['CLIENT_ID'])

    email = access_browser.find_element_by_id("email")
    email.send_keys(os.environ['EMAIL'])

    password = access_browser.find_element_by_id("password")
    password.send_keys(os.environ['PASSWORD'])

    login_button = access_browser.find_element_by_css_selector(
        "body > div > div > div.login-block > form:nth-child(3) > div:nth-child(5) > button"
    )
    login_button.click()
    sleep(10)

    access_browser.get("https://{}/employee/attendance/edit".format(host))
    sleep(5)

    empty_dates = []
    for i in list(range(2, 35)):
        raw_date_str = access_browser.find_element_by_css_selector(
            date_cell_selector.format(i)).text
        date_str = re.search(r'[0-9]{2}/[0-9]{2}', raw_date_str).group(0)
        target_date = datetime.datetime.strptime(
            "{}/{} 23:59".format(datetime.datetime.now().strftime("%Y"),
                                 date_str),
            "%Y/%m/%d %H:%M",
        )
        if target_date > datetime.datetime.now():
            break

        raw_holiday_str = access_browser.find_element_by_css_selector(
            is_holiday_selector.format(i)).text
        if len(re.sub(r'\s', '', raw_holiday_str)) > 0:
            continue

        start_time_str = access_browser.find_element_by_css_selector(
            start_time_selector.format(i)).get_attribute("value")
        end_time_str = access_browser.find_element_by_css_selector(
            end_time_selector.format(i)).get_attribute("value")
        rest_time_str = access_browser.find_element_by_css_selector(
            rest_duration_selector.format(i)).get_attribute("value")
        has_empty = (len(re.sub(r'\s', '', start_time_str)) *
                     len(re.sub(r'\s', '', end_time_str)) *
                     len(re.sub(r'\s', '', rest_time_str))) == 0
        if not has_empty:
            continue

        empty_dates.append(target_date)
    return empty_dates
Ejemplo n.º 10
0
    def go_to_mac_filtration(self, browser: webdriver):
        """

        """
        elem = browser.find_element_by_id("Menu1Txt1")
        elem.click()
        elem = browser.find_element_by_id("Menu1Txt1")
        elem.click()
        elem = browser.find_element_by_id("Menu2Txt3")
        elem.click()
Ejemplo n.º 11
0
def login(driver: webdriver):
    login_url = "https://pvoutput.org/login.jsp"
    driver.get(login_url)
    driver.implicitly_wait(100)

    username = driver.find_element_by_id("login")
    password = driver.find_element_by_id("password")
    username.send_keys(USERNAME)
    password.send_keys(PASSWORD)
    driver.find_elements_by_class_name("btn-primary")[0].click()
def handle_confirm_box(driver: webdriver, accept=True):
    driver.find_element_by_id(DISPLAY_CONFIRM_BOX_ID).click()
    alert = driver.switch_to.alert
    if accept:
        alert.accept()
    else:
        alert.dismiss()
    time.sleep(5)
    msg_element = driver.find_element_by_id(MESSAGE_LOCATOR_ID)
    return msg_element.text
Ejemplo n.º 13
0
def display_all_user_works_requests(browser: webdriver) -> None:
    #print(browser.find_element_by_id('gsc_bpf_more'))
    is_enable = browser.find_element_by_id('gsc_bpf_more').is_enabled()

    while is_enable:
        wait()  # Waiting for the adaptive request rate
        browser.find_element_by_id('gsc_bpf_more').click()
        requestmeter.count()
        sleep(1)
        is_enable = browser.find_element_by_id('gsc_bpf_more').is_enabled()
def handle_prompt_box(driver: webdriver, input=None):
    driver = webdriver.Chrome()
    driver.find_element_by_id(DISPLAY_PROMPT_BOX_ID).click()
    alert = driver.switch_to.alert
    if input:
        alert.send_keys(input)
        alert.accept()
        time.sleep(5)
        msg_element = driver.find_element_by_id(MESSAGE_LOCATOR_ID)
        return msg_element.text
    else:
        alert.dismiss()
        return None
Ejemplo n.º 15
0
def certificados_ue_step2(driver: webdriver, context: CustomerProfile):
    # 4. Data form:
    try:
        WebDriverWait(driver, DELAY).until(EC.presence_of_element_located((By.ID, "txtPaisNac")))
    except TimeoutException:
        logging.error("Timed out waiting for form to load")
        return None

    # Select country
    select = Select(driver.find_element_by_id("txtPaisNac"))
    select.select_by_visible_text(context.country)

    # Select doc type
    if context.doc_type == DocType.PASSPORT:
        driver.find_element_by_id("rdbTipoDocPasDdi").send_keys(Keys.SPACE)
    elif context.doc_type == DocType.NIE:
        driver.find_element_by_id("rdbTipoDocNie").send_keys(Keys.SPACE)
    elif context.doc_type == DocType.DNI:
        driver.find_element_by_id("rdbTipoDocDni").send_keys(Keys.SPACE)

    # Enter doc number and name
    element = driver.find_element_by_id("txtIdCitado")
    element.send_keys(context.doc_value, Keys.TAB, context.name)

    success = process_captcha(driver, context)
    if not success:
        return

    return True
Ejemplo n.º 16
0
def driver_do_login(driver: webdriver, credentials: Credentials) -> webdriver:
    """Consumes a selenium WebDriver pointed at the login page and a
Credentials and logs into the british library's MyRequests
service. Produces the consequent WebDriver.

    """
    user_field = driver.find_element_by_id(MYREQUESTS_USERNAME_FIELD_ID)
    pw_field = driver.find_element_by_id(MYREQUESTS_PASSWORD_FIELD_ID)
    login_button = driver.find_element_by_id(MYREQUESTS_LOGIN_BUTTON)
    username, password = credentials[0], credentials[1]
    user_field.send_keys(username)
    pw_field.send_keys(password)
    login_button.click()
    return driver
Ejemplo n.º 17
0
def to_job(driver: webdriver):
    driver.find_element_by_id("imgclose").click()
    # driver.find_element_by_xpath("//*[@id='hotkey_search']/input[7]").click()
    time.sleep(3)
    driver.find_element_by_xpath(
        "//*[@id='divfind_job']/button[2]/span").click()
    time.sleep(3)
    driver.find_element_by_xpath("//*[@id='UC_Modal_CJOB-item_7']").click()
    time.sleep(3)
    driver.find_element_by_xpath(
        "//*[@id='UC_FindJob_UC_Modal_CJOB']/div/div/div[3]/button[2]").click(
        )
    time.sleep(3)
    driver.find_element_by_xpath("//*[@id='UC_FindJob_btn1']").click()
    time.sleep(3)
Ejemplo n.º 18
0
def getdep(page: webdriver):
    """
    Selection de la liste des départements
    :param page:
    :return:
    """
    return UI.Select(page.find_element_by_id('listeDepartements'))
Ejemplo n.º 19
0
def browser_login(driver: webdriver):
    """
    进入登陆页面并完成登陆
    """

    driver.find_element_by_id(Order.index_login.value).click()
    driver.switch_to_frame(Order.frame.value)
    try:
        driver.find_element_by_css_selector(Order.username.value).send_keys(config.username)
        driver.find_element_by_css_selector(Order.password.value).send_keys(config.password)
        time.sleep(2)
        driver.find_element_by_css_selector(Order.login_button.value).click()

    except Exception as e:
        log(e)
        raise(ZeroDivisionError("登陆标签有变导致 selenium 定位出错,请修正"))
Ejemplo n.º 20
0
def accept_cookie(driver: webdriver) -> None:
    """Wikiloc accept cookie policy."""
    try:
        btn = driver.find_element_by_id("acept-cookies")
        btn.click()
    except NoSuchElementException:
        pass
Ejemplo n.º 21
0
def select_office(driver: webdriver, context: CustomerProfile):
    if not context.auto_office:
        speaker.say("MAKE A CHOICE")
        logging.info("Press Any Key")
        input()
        return True
    else:
        el = driver.find_element_by_id("idSede")
        select = Select(el)
        if context.save_artifacts:
            offices_path = os.path.join(
                os.getcwd(), f"offices-{datetime.datetime.now()}.html".replace(":", "-")
            )
            with open(offices_path, "w") as f:
                f.write(el.get_attribute("innerHTML"))

        if context.offices:
            for office in context.offices:
                try:
                    select.select_by_value(office.value)
                    return True
                except Exception as e:
                    logging.error(e)
                    if context.operation_code == OperationType.RECOGIDA_DE_TARJETA:
                        return None

        select.select_by_index(random.randint(0, len(select.options) - 1))
        return True
Ejemplo n.º 22
0
def process_captcha(driver: webdriver, context: CustomerProfile, partially: bool = False):
    for i in range(1, 4):
        if context.auto_captcha:
            # wait for captcha and proceed:
            WebDriverWait(driver, CAPTCHA_TIMEOUT).until(
                lambda x: x.find_element_by_css_selector(".antigate_solver.solved")
            )
        else:
            logging.info("HEY, FIX CAPTCHA and press ENTER")
            input()
            logging.info("OK, Waiting")

        # stop the function upon captcha is solved
        if partially:
            return True

        time.sleep(0.3)
        btn = driver.find_element_by_id("btnEnviar")
        btn.send_keys(Keys.ENTER)

        time.sleep(0.3)
        try:
            WebDriverWait(driver, 7).until(EC.presence_of_element_located((By.ID, "btnConsultar")))
            break
        except TimeoutException:
            logging.error("Captcha loop")

        if i == 3:
            # Failed to get captcha
            logging.error("Tries exceeded")
            return None

    return True
Ejemplo n.º 23
0
def get_status(session: webdriver) -> str:
    try:
        status = session.find_element_by_id('texto-estado-fichaje')
        print(status.text)
        return status.text
    except Exception as e:
        print(f'Unable to get status: {e}')
        exit(1)
Ejemplo n.º 24
0
def login(user_id: str, pin: str, site: str, web_driver: webdriver) -> None:
    if site == OSCAR:
        field = web_driver.find_element_by_id("user_id")
        field.send_keys(user_id)

        field = web_driver.find_element_by_id("pin")
        field.send_keys(pin)

        field.send_keys(Keys.RETURN)
    if site == WORKS:
        field = web_driver.find_element_by_id("username")
        field.send_keys(user_id)

        field = web_driver.find_element_by_id("password")
        field.send_keys(pin)

        field.send_keys(Keys.RETURN)
def search_hotel(driver: webdriver, placename):
    """ This City name and search it

    :param driver:
    :param placename:
    :return:
    """
    #import pdb;pdb.set_trace()
    driver.find_element_by_id(SEARCH_HOTEL_INPUT_BOX_ID).send_keys(placename)
    time.sleep(2)
    sugget_elements = driver.find_elements_by_xpath(SEARCH_PLACE_XPATH)
    for element in sugget_elements:
        if element.text == placename:
            element.click()
            break
        else:
            continue
Ejemplo n.º 26
0
def get_vehicle_id(driver: webdriver, vehicle: str) -> Tuple[str, str]:
    """
    Gets the ID on the history page associated with the vehicle
    Args:
        driver (webdriver): The webdriver used to run the browser session
        vehicle (str): The registration of the vehicle to look up
    Returns:
        Tuple[str, str]: A 2-tuple consisting of the vehicle registration
        and its associated ID on the page
    """
    print(f'Finding history for {vehicle}')
    dropdown = Select(driver.find_element_by_id('ctl00_cphcontent_ddlVehicle'))
    dropdown.select_by_visible_text(vehicle)
    driver.find_element_by_id('ctl00_cphcontent_btnRunHistory').click()
    # Get value attribute from selected option
    selected = driver.find_element_by_xpath(
        f'//*[@id="ctl00_cphcontent_ddlVehicle"]/option[.="{vehicle}"]')
    return (vehicle, selected.get_attribute('value'))
Ejemplo n.º 27
0
def try_mute(driver: webdriver):
    try:
        driver.switch_to_frame(driver.find_element_by_tag_name("iframe"))
        elem = driver.find_element_by_id("applixir_video_ima-mute-div")
        elem.click()
        print("muted")
        driver.switch_to_default_content()
    except:
        driver.switch_to_default_content()
        print("fail to mute")
Ejemplo n.º 28
0
def navigate_to_archive(driver: webdriver):
    find_2fa_ready_element(driver).click()

    # Select GESAMTER_ZEITRAUM
    zeitraum_select = driver.find_element_by_id('f1-zeitraumInput_pbInput')
    select_field = webdriver.support.ui.Select(zeitraum_select)
    select_field.select_by_value('GESAMTER_ZEITRAUM')

    # Start search
    suchen_field = driver.find_element_by_link_text('Suchen')
    suchen_field.click()
Ejemplo n.º 29
0
 def __init__(self, row: int, col: int, driver: webdriver) -> None:
     self.bomb: bool = False
     self.blank: bool = True
     self.number: bool = False
     self.attribute: str = 'square blank'
     self.cell_integer: int = -1
     self.posn: Posn = Posn(row, col)
     self.neighbors: set = set()
     self.driver: webdriver = driver
     self.pointer: WebElement = driver.find_element_by_id(
         f'{row + 1}_{col + 1}')
Ejemplo n.º 30
0
def phone_mail(driver: webdriver, context: CustomerProfile, retry: bool = False):
    try:
        WebDriverWait(driver, DELAY).until(EC.presence_of_element_located((By.ID, "emailDOS")))
        logging.info("Email page hit")
    except TimeoutException:
        logging.error("Timed out waiting for phone/email to load")
        return None

    if not retry:
        element = driver.find_element_by_id("txtTelefonoCitado")
        element.send_keys(context.phone)  # phone num

        element = driver.find_element_by_id("emailUNO")
        element.send_keys(context.email)

        element = driver.find_element_by_id("emailDOS")
        element.send_keys(context.email)

    driver.execute_script("enviar();")

    return cita_selection(driver, context)
Ejemplo n.º 31
0
def execSearch(browser: webdriver):
    """
    Googleで検索を実行する
    :param browser: webdriver
    """
    # スクリーンショットのファイル名用に日付を取得
    dt = datetime.datetime.today()
    dtstr = dt.strftime("%Y%m%d%H%M%S")

    # Googleにアクセス
    browser.get('https://www.google.co.jp/')
    sleep(1)

    # キーワードの入力
    browser.find_element_by_id('lst-ib').send_keys('docker selenium')

    # 検索実行
    browser.find_element_by_name('btnK').submit()
    sleep(1)

    # スクリーンショット
    browser.save_screenshot('images/' + dtstr + '.png')