def test_guest_should_see_login_link(self, browser: RemoteWebDriver):
     """
     :param WebDriver browser: The browser's driver
     :return:
     """
     browser.get(link)
     browser.find_element_by_css_selector("#login_link")
def _set_time(driver: WebDriver, upload_time: datetime):
    # Start time scheduling
    WebDriverWait(driver,
                  20).until(EC.element_to_be_clickable(
                      (By.NAME, "SCHEDULE"))).click()

    # Open date_picker
    driver.find_element_by_css_selector(
        "#datepicker-trigger > ytcp-dropdown-trigger:nth-child(1)").click()

    date_input: WebElement = driver.find_element_by_css_selector(
        "input.tp-yt-paper-input")
    date_input.clear()
    # Transform date into required format: Mar 19, 2021
    date_input.send_keys(upload_time.strftime("%b %d, %Y"))
    date_input.send_keys(Keys.RETURN)

    # Open time_picker
    driver.find_element_by_css_selector(
        "#time-of-day-trigger > ytcp-dropdown-trigger:nth-child(1) > div:nth-child(2)"
    ).click()

    time_list = driver.find_elements_by_css_selector(
        "tp-yt-paper-item.tp-yt-paper-item")
    # Transform time into required format: 8:15 PM
    time_str = upload_time.strftime("%I:%M %p").strip("0")
    time = [time for time in time_list[2:] if time.text == time_str][0]
    time.click()
Beispiel #3
0
def fill_out_product(driver: WebDriver, products: str):
    product_btn = find_element(
        driver, find_selector_by_name(SELECTORS, "product-btn")
    )
    product_btn.click()

    if driver.find_element_by_css_selector("body > div:nth-child(11) > div > div > button").is_displayed():
        driver.find_element_by_css_selector("body > div:nth-child(11) > div > div > button").click()

    driver.find_element_by_xpath(
        "//body/div[2]/nav/span[2]/span/button")
        #"//body/div[3]/div[1]/div[1]/form[1]/div[2]/div[1]/div[1]/div[2]/div[1]/input[1]").send_keys(products)

    driver.find_element_by_xpath(
        "//body/div[3]/div[1]/div[1]/form[1]/div[2]/div[1]/div[1]/div[2]/button[1]/i[1]").click()
    while True:
        find_and_select_random_radio_and_click_next(driver)
        time.sleep(1)  # seconds
        try:
            if driver.find_element_by_xpath("//button[contains(text(),'Save product')]").is_displayed():
                driver.find_element_by_xpath("//button[contains(text(),'Save product')]").click()
                break
            else:
                continue
        except:
            pass
Beispiel #4
0
def upload_ldss_batch(p_browser: WebDriver, upload_files):
    logger = logging.getLogger('upload_ldss_batch')
    p_browser.get('https://eit1-i.svcs.hp.com/cds/LoadLdssAsync')
    ret_file_name = []
    for single_file in upload_files:
        c_dir = os.getcwd()
        full_path_file = os.path.join(c_dir, LDSS_INPUT, single_file)
        logger.info('full_path_file %r' % full_path_file)
        p_browser.find_element_by_css_selector('input[id = "ldssfile"]').send_keys(full_path_file)
        validation_option = p_browser.find_element_by_css_selector('select[id = "UploadOptionList"]')
        validation_option.send_keys('Validate Only')
        upload_button = p_browser.find_element_by_css_selector('input[value = "Upload"]')
        upload_button.click()

        time.sleep(5)

        for repeat in range(9):
            upload_status = p_browser.find_element_by_id('tbMontor').get_attribute('value')
            if 'go to CDS Console' in upload_status and 'Load LDSS Successful:' in upload_status:
                logger.info('[UPLOAD LDSS OK] Upload {} {}.'.format(full_path_file, upload_status))
                ret_file_name.append(os.path.split(full_path_file)[-1])
                break
            else:
                time.sleep(5)
                logger.info('sleep 5 seconds...')
        else:
            logger.info('{} upload failed.'.format(os.path.split(full_path_file)[-1]))
            print(upload_status)

    return ret_file_name
def find_a_job(browser: WebDriver, tran_name: str):
    i = 5  # how many second will CDS wait to check the validation status

    browser.get("https://eit1-i.svcs.hp.com/cds/ConsoleRead")
    Submitter = browser.find_element_by_css_selector('input[id = "Filters_Submitter"]')
    Transactionname = browser.find_element_by_css_selector('input[id = "Filters_TranName"]')
    showtime = browser.find_element_by_css_selector('select[id = "Filters_Timefilterval"]')
    # show = browser.find_element_by_id('Filters_Timefilterval')
    filter = browser.find_element_by_css_selector('input[id = "ApplyFilterButton"]')
    Submitter.clear()
    Transactionname.send_keys(tran_name)
    showtime.send_keys("Last 1 Month")
    filter.click()

    rows = browser.find_elements_by_css_selector("tr.table_row")
    # print(len(rows))
    for row in rows:
        cells = row.find_elements_by_tag_name("td")
        # row.find_elements_by_tag_name('td')
        if cells[3].text == "Errors" or cells[3].text == "Completed":
            downloadldss = row.find_element_by_css_selector("td.context-menu-ldss")
            downloadldss.click()
        else:
            time.sleep(10)
            i = i - 1
            print("Will wait 10x" + i + "second(s)")
            if i < 1:
                break

    print("you can check the validation result now!")
    def _handle_sign_in(browser: WebDriver, email: str, password: str):
        input_email = browser.find_element_by_css_selector('#loginForm input[type="email"]')
        input_password = browser.find_element_by_css_selector('#loginForm input[type="password"]')
        button_sign_in = browser.find_element_by_css_selector('#loginForm button')

        input_email.send_keys(email)
        input_password.send_keys(password)
        button_sign_in.submit()
 def _check_auth_code_screen(self, browser: WebDriver):
     current_url = browser.current_url
     is_redirect = current_url.startswith(self._callback)
     try:
         browser.find_element_by_css_selector("#selectAllScope")
         is_scope_selection = True
     except NoSuchElementException:
         is_scope_selection = False
     return is_redirect or is_scope_selection
Beispiel #8
0
def _set_endcard(driver: WebDriver):
    # Add endscreen
    driver.find_element_by_css_selector("#endscreens-button").click()
    sleep(5)

    # Select endcard type from last video or first suggestion if no prev. video
    driver.find_element_by_css_selector("div.card:nth-child(1)").click()

    WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.ID, "save-button"))).click()
Beispiel #9
0
def watch_current_video(driver: WebDriver, max_time: int = 420) -> None:
    """Watches the YouTube video on the currently selected page.
    Arguments:
    driver - The webdriver, it has to be navigated to a YouTube video before calling this function.
    with_progress - If true, periodically print the watch progress.
    max_time - Maximum time spent watching this video before aborting.
    """

    # Wait for YouTube to finish loading the player
    player_div = WebDriverWait(driver, 20).until(
        EC.element_to_be_clickable(
            (By.CSS_SELECTOR, "div#player.ytd-watch-flexy")))
    start_time = time.time()
    logging.info("Started watching")
    current_time_elem = driver.find_element_by_css_selector(
        "span.ytp-time-current")
    duration_time_elem = driver.find_element_by_css_selector(
        "span.ytp-time-duration")

    # The watch next video button gets created later I guess ¯\_(ツ)_/¯
    up_next_button_elem = None

    # We wiggle the virtual mouse to prevent YouTube from hiding the player controls,
    # because we read the watched time from there
    move_to_player = webdriver.ActionChains(driver)
    move_to_player.move_to_element_with_offset(player_div, 100, 100)
    wiggle_mouse = webdriver.ActionChains(driver)
    wiggle_mouse.move_by_offset(10, 0)
    wiggle_mouse.pause(1)
    wiggle_mouse.move_by_offset(-10, 0)
    move_to_player.perform()
    while True:
        # The buttom time bar won't update if it is not visible so move the mouse to show it
        wiggle_mouse.perform()
        logging.info(
            f'{current_time_elem.get_attribute("textContent")} of {duration_time_elem.get_attribute("textContent")}'
        )

        # Resting is important
        time.sleep(5)

        # If the 'Up next' screen is showing, we are done watching this video
        try:
            if up_next_button_elem:
                if up_next_button_elem.is_displayed():
                    break
            else:
                up_next_button_elem = driver.find_element_by_class_name(
                    "ytp-autonav-endscreen-upnext-button")
        except:
            # The next button is created lazily, so sometimes its missing
            logging.warning("No next button found while watching video")

        if time.time() - start_time >= max_time:
            break

    logging.info("finished watching video")
Beispiel #10
0
def switch_into_module(driver: WebDriver) -> None:
    """Extract the Enter Iframe function just so it can be better exported."""
    # Scorm's wrapper on the modules needs to be opened first.
    click_surely(driver.find_element_by_css_selector('.scf-play-button'),
                 False)
    iframe = driver.find_element_by_css_selector('iframe[src^="/content/"]')
    driver.switch_to.frame(iframe)
    # Scorm has TWO layers of framing.
    iframe = driver.find_element_by_css_selector('frame#ScormContent')
    driver.switch_to.frame(iframe)
Beispiel #11
0
def login(browser_driver: WebDriver, url_link: str):
    with open('.pass') as f:
        credential = json.load(f)

    browser_driver.get(url_link)
    input_email = browser_driver.find_element_by_css_selector('input[name = "USER"]')
    input_email.send_keys(credential['user_name'])
    input_password = browser_driver.find_element_by_css_selector('input[name = "PASSWORD"]')
    input_password.send_keys(decrypt(credential['password'], str(uuid.getnode())))
    btn_login = browser_driver.find_element_by_css_selector('input[value = "Log on"]')
    btn_login.click()
Beispiel #12
0
def login(browser: RemoteWebDriver):
    browser.get(LOGIN_URL)
    time.sleep(5)
    ele_tel = browser.find_element_by_css_selector('input[type="tel"]')
    ele_tel.send_keys(config['zhipin']['PHONE'])
    ele_passwd = browser.find_element_by_css_selector('input[type="password"]')
    ele_passwd.send_keys(config['zhipin']['PASSWORD'])
    ele_verify = browser.find_element_by_css_selector(
        'div[id*="verrify"] > div > div > span')
    # todo auto press scroll bar
    with open('cookie.json', 'w') as f:
        f.write(json.dumps(browser.get_cookies()))
    def verificar_elemento_html_hasta_no_existir_en_el_dom_html(
            web_driver: WebDriver,
            time=5,
            id=None,
            xpath=None,
            link_text=None,
            partial_link_text=None,
            name=None,
            tag_name=None,
            class_name=None,
            css_selector=None):

        msg_selector_html_a_localizar = HtmlActions.generar_identificador_excepcion(
            id, xpath, link_text, partial_link_text, name, tag_name,
            class_name, css_selector)

        tiempo_inicial = Temporizador.obtener_tiempo_timer()

        while True:
            try:
                if id is not None:
                    web_driver.find_element_by_id(id)
                elif xpath is not None:
                    web_driver.find_element_by_xpath(xpath)
                elif link_text is not None:
                    web_driver.find_element_by_link_text(link_text)
                elif partial_link_text is not None:
                    web_driver.find_element_by_partial_link_text(
                        partial_link_text)
                elif name is not None:
                    web_driver.find_element_by_name(name)
                elif tag_name is not None:
                    web_driver.find_element_by_tag_name(tag_name)
                elif class_name is not None:
                    web_driver.find_element_by_class_name(class_name)
                elif css_selector is not None:
                    web_driver.find_element_by_css_selector(css_selector)

                segundos_transcurridos = Temporizador.obtener_tiempo_timer(
                ) - tiempo_inicial

                if segundos_transcurridos > time:
                    e = TimeoutException()
                    e.msg = webdriver_actions_constantes.WEBDRIVER_WAIT_UNTIL_NOT_TIMEOUT_EXCEPTION.format(
                        time, msg_selector_html_a_localizar, e.msg)

                    raise e
                else:
                    pass

            except NoSuchElementException:
                break
Beispiel #14
0
def data_mining(driver: WebDriver):
    """
    Main function providing flow to the app. Next page button is different on first page then on others so when page is
    not having the next page button the button's value is changed to boolean which means last article page. Program goes
    through last page's articles and breaks loop.
    :param driver: WebDriver
    :return:
    """
    driver.get("https://teonite.com/blog/")
    driver.maximize_window()
    next_page_button = driver.find_element_by_css_selector(
        "ul.pagination-list>li.blog-button.post-pagination>a")

    while True:
        main_window = driver.window_handles[0]
        articles = driver.find_elements_by_class_name("post-container")
        for article in articles:
            article_title = get_article_title(article)
            open_article_in_new_tab(driver, article, article_title)
            save_article_in_db(driver, article_title)
            driver.close()
            driver.switch_to.window(main_window)
        if not isinstance(next_page_button, bool):
            next_page_button.click()
            try:
                next_page_button = driver.find_element_by_xpath(
                    "//*[@id='blog-posts']/div/ul/li[2]/a")
            except NoSuchElementException:
                next_page_button = False
        else:
            driver.close()
            break
    def _get_auth_code(self, browser: WebDriver) -> str:
        wait = WebDriverWait(browser, 120).until(lambda b: self._check_auth_code_screen(b))

        if wait is not True:
            raise Exception("Not found auth_code")

        current_url = browser.current_url

        if current_url.startswith(self._callback):
            result = url_parser.urlparse(current_url)
            query = url_parser.parse_qs(result.query, strict_parsing=True)
            return query['code'][-1]
        else:
            browser.find_element_by_css_selector("#selectAllScope").click()
            browser.find_element_by_css_selector('#allow-button').click()
            return self._get_auth_code(browser)
def accept_all_cookies(driver: WebDriver):
    from pages import common_selectors

    accept = common_selectors.COOKIE_BANNER["cookie banner"][
        "accept all cookies"]
    banner_selector = common_selectors.COOKIE_BANNER["cookie banner"]["banner"]
    if is_element_present(driver, banner_selector):
        banner = driver.find_element_by_css_selector(banner_selector.value)
        if banner.is_displayed():
            logging.debug("Accepting all cookies")
            button = driver.find_element_by_css_selector(accept.value)
            button.click()
        else:
            logging.debug("Cookie banner is not visible")
    else:
        logging.debug("Cookie banner is not present")
def get_job_tran_run_id(browser: WebDriver,  tran_name: str, submitter_input: str) -> str:
    console = browser.find_element_by_link_text('CDS Console')
    console.click()

    Transactionname = browser.find_element_by_css_selector('input[id = "Filters_TranName"]')
    Transactionname.send_keys(tran_name)

    submitter = browser.find_element_by_id('Filters_Submitter')
    submitter.clear()

    submitter = browser.find_element_by_id('Filters_Submitter')
    submitter.send_keys(submitter_input)

    show = browser.find_element_by_id('Filters_Timefilterval')
    show.send_keys('All')

    Apply_Filter = browser.find_element_by_id('ApplyFilterButton')
    Apply_Filter.click()
    rows = browser.find_elements_by_css_selector('tr.table_row')

    for row in rows:
        cells = row.find_elements_by_tag_name('td')
        for i, c in enumerate(cells):
            if c.text == tran_name:
                tran_run_id = cells[i + 10].text
                return tran_run_id
def get_latest_template(browser: WebDriver, url_link):
    TEMPLATE_PATH = 'template'
    TEMPLATE_NAME = 'template.xlsx'
    with open('config.json') as f:
        config = json.load(f)
    browser.get(url_link)
    list = browser.find_element_by_id('ApplicationList')
    list.send_keys('Standard LDSS')
    core_data = browser.find_element_by_id('CoreData')
    core_data.click()
    download_btn = browser.find_element_by_css_selector('input[value = "Download"]')
    download_btn.click()
    time.sleep(10)

    c_dir = os.getcwd()
    template_path = os.path.join(c_dir, TEMPLATE_PATH)
    file_bef = os.listdir(template_path)
    if TEMPLATE_NAME in file_bef:
        os.remove(template_path + os.sep + TEMPLATE_NAME)
    time.sleep(3)
    for a in range(len(file_bef)):
        if file_bef[a] == '__init__.py':
            pass
        else:
            os.rename(template_path + os.sep + file_bef[a], template_path + os.sep + TEMPLATE_NAME)
            break
Beispiel #19
0
def __hole_item_id(item_name:str, driver:WebDriver.WebDriver) -> int:
# def _hole_item_id(item_name:str, driver:webdriver.Chrome):
    driver.get('https://classic.wowhead.com/items/name:' + item_name)
    # driver.get('https://de.classic.wowhead.com/items/name:' + item_name)
    e: WebDriver.WebElement = driver.find_element_by_css_selector('table.listview-mode-default tr td div a')
    item_link = e.get_attribute('href')
    return __extrahiere_itemid(item_link)
def fill_out_country(driver: WebDriver, country: str):
    # search using the provide country name from the test case
    driver.find_element_by_css_selector("#search-input").clear()
    driver.find_element_by_css_selector("#search-input").send_keys(country)

    # look out for the list displayed after entering country name and select random/provided country
    ul_list_element = driver.find_element_by_xpath(
        "//body/div[8]/div/div/div/div/div/div[1]/div[3]/div[2]/div[2]/ul")

    section_elements = ul_list_element.find_elements_by_tag_name("section")
    logging.debug("length of section elements " + str(len(section_elements)))
    # select random section element and within that select a country
    index_random_element_to_be_selected = random.randint(
        0,
        len(section_elements) - 1)
    logging.debug("Index of section elements " +
                  str(index_random_element_to_be_selected))
    section_element_selected = section_elements[
        index_random_element_to_be_selected]
    logging.debug(section_element_selected)

    div_elements = section_element_selected.find_elements_by_tag_name(
        "div")  # 2 has to be present
    logging.debug("length of div elements " + str(len(div_elements)))
    level_1_div_element = div_elements[
        1]  # section_element_selected.find_element_by_class_name("p-t-s expand-section open")
    level_2_div_element = level_1_div_element.find_element_by_tag_name("div")
    span_elements = level_2_div_element.find_elements_by_tag_name("span")
    logging.debug("length of span elements " + str(len(span_elements)))
    # select random span element and within that select a country
    index_random_element_to_be_selected = random.randint(
        0,
        len(span_elements) - 1)
    span_element_selected = span_elements[index_random_element_to_be_selected]
    li_element = span_element_selected.find_element_by_tag_name("li")
    # finally arrived at country name button(s)
    buttons_elements = li_element.find_elements_by_tag_name("button")
    logging.debug("length of country button elements " +
                  str(len(buttons_elements)))
    country_name_found = False
    for button_element in buttons_elements:
        if str(button_element.text).lower() == country.lower():
            country_name_found = True
            button_element.click()
            break
    if country_name_found == False:
        raise Exception("Country name could not be found " + str(country))
def upload_file(
    driver: WebDriver,
    video_path: str,
    title: str,
    description: str,
    game: str,
    kids: bool,
    upload_time: datetime,
    thumbnail_path: str = None,
):
    WebDriverWait(driver, 20).until(
        EC.element_to_be_clickable(
            (By.CSS_SELECTOR, "ytcp-button#create-icon"))).click()
    WebDriverWait(driver, 20).until(
        EC.element_to_be_clickable(
            (By.XPATH, '//tp-yt-paper-item[@test-id="upload-beta"]'))).click()
    video_input = driver.find_element_by_xpath('//input[@type="file"]')
    video_input.send_keys(video_path)

    _set_basic_settings(driver, title, description, thumbnail_path)
    _set_advanced_settings(driver, game, kids)
    # Go to visibility settings
    for i in range(3):
        WebDriverWait(driver, 20).until(
            EC.element_to_be_clickable((By.ID, "next-button"))).click()

    _set_time(driver, upload_time)
    _wait_for_processing(driver)
    # Go back to endcard settings
    driver.find_element_by_css_selector("#step-badge-1").click()
    _set_endcard(driver)

    for _ in range(2):
        # Sometimes, the button is clickable but clicking it raises an error, so we add a "safety-sleep" here
        sleep(5)
        WebDriverWait(driver, 20).until(
            EC.element_to_be_clickable((By.ID, "next-button"))).click()

    sleep(5)
    WebDriverWait(driver,
                  20).until(EC.element_to_be_clickable(
                      (By.ID, "done-button"))).click()

    # Wait for the dialog to disappear
    sleep(5)
    logging.info("Upload is complete")
Beispiel #22
0
def get_table_column_cells(driver: WebDriver, col: int) -> List[str]:
    result = []
    grid = driver.find_element_by_css_selector('.grid-canvas')
    rows = grid.find_elements_by_css_selector(".slick-row")
    for row in rows:
        elt = row.find_element_by_css_selector('.slick-cell.l%d.r%d' % (col, col))
        result.append(elt.text)
    return result
Beispiel #23
0
def get_table_selected_rows(driver: WebDriver) -> Set[int]:
    result = set()
    grid = driver.find_element_by_css_selector('.grid-canvas')
    rows = grid.find_elements_by_css_selector(".slick-row")
    for i, row in enumerate(rows):
        elt = row.find_element_by_css_selector('.slick-cell.l1.r1')
        if 'selected' in elt.get_attribute('class'):
            result.add(i)
    return result
Beispiel #24
0
def drag_range_slider(driver: WebDriver, css_class: str, location: str, distance: float) -> None:
    el = driver.find_element_by_css_selector(css_class)
    handle = el.find_element_by_css_selector('.noUi-handle-' + location)
    actions = ActionChains(driver)
    actions.move_to_element(handle)
    actions.click_and_hold()
    actions.move_by_offset(distance, 0)
    actions.release()
    actions.perform()
Beispiel #25
0
 def init_from_web_driver(cls, web_driver: WebDriver):
     neighborhood_component = web_driver.find_element_by_css_selector(
         '.ds-neighborhood .zsg-content-component')
     neighborhood_details = [
         int(neighborhood_detail.get_attribute("innerText"))
         for neighborhood_detail in
         neighborhood_component.find_elements_by_css_selector('span.eTicsB')
     ]
     return cls(*neighborhood_details)
Beispiel #26
0
def drag_slider(driver: WebDriver, css_class: str, distance: float, release: bool = True) -> None:
    el = driver.find_element_by_css_selector(css_class)
    handle = el.find_element_by_css_selector('.noUi-handle')
    actions = ActionChains(driver)
    actions.move_to_element(handle)
    actions.click_and_hold()
    actions.move_by_offset(distance, 0)
    if release:
        actions.release()
    actions.perform()
Beispiel #27
0
 def init_from_web_driver(cls, web_driver: WebDriver):
     container = web_driver.find_element_by_css_selector('p.jfHfpE')
     sold_date = container.find_elements_by_css_selector(
         '.bvTLbK')[0].get_attribute("innerText").replace("Sold on ", "")
     property_price = container.find_elements_by_css_selector(
         '.bvTLbK')[1].find_element_by_css_selector(
             '.flSprY').get_attribute("innerText").replace("$", "").replace(
                 ",", "_")
     property_price = int(property_price)
     return cls(sold_date, property_price)
Beispiel #28
0
def send_tokens_to_token_bar(driver: WebDriver, element_selector: str, tokens: List[str]):
    element = driver.find_element_by_css_selector(element_selector)

    for token in tokens:
        element.send_keys(token)
        element.send_keys(Keys.ENTER)

    # Tab away from element and wait
    element.send_keys(Keys.TAB)
    time.sleep(1)
Beispiel #29
0
def fill_out_product(driver: WebDriver, products: str):
    product_btn = find_element(
        driver, find_selector_by_name(SELECTORS, "product-btn")
    )
    product_btn.click()

    try:
        if driver.find_element_by_css_selector("body > div:nth-child(11) > div > div > button").is_displayed():
            driver.find_element_by_css_selector("body > div:nth-child(11) > div > div > button").click()
    except:
        pass

    try:

        product_input_text = driver.find_element_by_xpath("//input[@id='input-commodity-name']").text
        logging.debug("product_input_text -> " + product_input_text)

        for i in range(len(product_input_text)):
            driver.find_element_by_xpath(
                "//body/div[3]/div[1]/div[1]/form[1]/div[2]/div[1]/div[1]/div[2]/div[1]/input[1]").sendKeys(
                Keys.BACKSPACE)
        driver.find_element_by_xpath(
            "//body/div[3]/div[1]/div[1]/form[1]/div[2]/div[1]/div[1]/div[2]/div[1]/input[1]").send_keys("")
        driver.find_element_by_xpath(
            "//body/div[3]/div[1]/div[1]/form[1]/div[2]/div[1]/div[1]/div[2]/div[1]/input[1]").send_keys(products)
        driver.find_element_by_xpath(
            "//body/div[3]/div[1]/div[1]/form[1]/div[2]/div[1]/div[1]/div[2]/button[1]/i[1]").click()

        while True:
            find_and_select_random_radio_and_click_next(driver)
            time.sleep(1)  # seconds
            try:
                if driver.find_element_by_xpath("//button[contains(text(),'Save product')]").is_displayed():
                    driver.find_element_by_xpath("//button[contains(text(),'Save product')]").click()
                    break
                else:
                    continue
            except:
                pass
    except Exception as ex:
        logging.debug("Exception in product input " + str(ex))
        driver.find_element_by_css_selector("#input-commodity-name").send_keys(products)
        driver.find_element_by_xpath("/html/body/div[3]/div/div/form/div[2]/div/div/section/div/button").click()
Beispiel #30
0
def test_tabbing(browser: WebDriver, port):
    id_selector = '.nbgrader-NotebookPanelWidget:not(.lm-mod-hidden) ' \
                  '.nbgrader-CellId input'
    points_selector = '.nbgrader-NotebookPanelWidget:not(.lm-mod-hidden) ' \
                      '.nbgrader-CellPoints input'

    _load_notebook(browser, port)
    _activate_toolbar(browser)

    def active_element_is(element):
        def waitfor(browser):
            active = browser.switch_to.active_element
            return element == active
        return waitfor

    id_element = browser.find_element_by_css_selector(id_selector)
    points_element = browser.find_element_by_css_selector(points_selector)

    # make it manually graded
    _select_manual(browser)

    # click the id field
    element = id_element
    element.click()
    element.send_keys(Keys.RETURN)
    _wait(browser).until(active_element_is(id_element))

    # press tab and check that the active element is correct
    element.send_keys(Keys.TAB)
    _wait(browser).until(active_element_is(points_element))

    # make it autograder tests
    _select_tests(browser)

    # click the id field
    element = id_element
    element.click()
    element.send_keys(Keys.RETURN)
    _wait(browser).until(active_element_is(id_element))

    # press tab and check that the active element is correct
    element.send_keys(Keys.TAB)
    _wait(browser).until(active_element_is(points_element))
def _set_endcard(driver: WebDriver):
    # Add endscreen
    driver.find_element_by_css_selector("#endscreens-button").click()
    sleep(5)

    for i in range(1, 11):
        try:
            # Select endcard type from last video or first suggestion if no prev. video
            driver.find_element_by_css_selector(
                "div.card:nth-child(1)").click()
            break
        except (NoSuchElementException, ElementNotInteractableException):
            logging.warning(
                f"Couldn't find endcard button. Retry in 5s! ({i}/10)")
            sleep(5)

    WebDriverWait(driver,
                  20).until(EC.element_to_be_clickable(
                      (By.ID, "save-button"))).click()
Beispiel #32
0
def open_any_article(driver: WebDriver) -> str:
    links = extract_attributes_by_css(
        driver.page_source, ARTICLE_LINKS.value, attrs=["href"]
    )
    selected_link = random.choice(links)

    link = driver.find_element_by_css_selector(f"a[href='{selected_link['href']}']")
    with wait_for_page_load_after_action(driver):
        link.click()
    return selected_link["text"]
Beispiel #33
0
 def init_from_web_driver(cls, web_driver: WebDriver):
     living_area_container = web_driver.find_element_by_css_selector(
         '.ds-bed-bath-living-area-container')
     area_details = [
         int([
             x.get_attribute("innerText")
             for x in area_detail.find_elements_by_tag_name("span")
         ][0].replace(",", "_")) for area_detail in
         living_area_container.find_elements_by_css_selector('.iIPyzR')
     ]
     return cls(*area_details)
 def __call__(self, driver: WebDriver):
     # inject and expose javascript testing modules via window.test
     bundle = open("bundle.js")
     driver.execute_script(bundle.read())
     bundle.close()
     selector = driver.execute_script(
         "return window.test.getCssSelector(arguments[0])", self.element
     )
     return (
         driver.find_element_by_css_selector(selector + ":invalid") == self.element
     )
Beispiel #35
0
def upload_ldss(p_browser: WebDriver, upload_file):
    logger = logging.getLogger('upload_ldss')
    p_browser.get('https://eit1-i.svcs.hp.com/cds/LoadLdssAsync')
    p_browser.find_element_by_css_selector('input[id = "ldssfile"]').send_keys(upload_file)
    validation_option = p_browser.find_element_by_css_selector('select[id = "UploadOptionList"]')
    validation_option.send_keys('Validate and Release')
    upload_button = p_browser.find_element_by_css_selector('input[value = "Upload"]')
    upload_button.click()

    time.sleep(5)
   
    for repeat in range(9):
        upload_status = p_browser.find_element_by_id('tbMontor').get_attribute('value')
        if 'go to CDS Console' in upload_status and 'Load LDSS Successful:' in upload_status:
            logger.info(upload_status)
            return True        
        else:
            time.sleep(5)

    logger.info("DOESN'T Upload Successfully")
    return False
def find_and_select_random_item_list(driver: WebDriver, element_selector_name: str):
    payment_methods_btn = driver.find_element_by_css_selector(
        "#getting-paid > div > div:nth-child(1) > div.select.m-b-l > div > div.select__placeholder.text-blue-deep-60.bg-white.radius")
    payment_methods_btn.click()
    payment_terms_btn = driver.find_element_by_css_selector(
        "#getting-paid > div > div:nth-child(2) > div.select.m-b-l > div > div.select__placeholder.text-blue-deep-60.bg-white.radius")
    payment_terms_btn.click()
    incoterms_btn = driver.find_element_by_css_selector(
        "#getting-paid > div > div:nth-child(3) > div.select.m-b-l > div > div.select__placeholder.text-blue-deep-60.bg-white.radius")
    incoterms_btn.click()
    driver.implicitly_wait(5)
    # select__list body-l bg-white radius
    payment_methods_element = driver.find_element_by_css_selector(
        "#getting-paid > div > div:nth-child(1) > div.select.m-b-l > div > ul")
    payment_terms_element = driver.find_element_by_css_selector(
        "#getting-paid > div > div:nth-child(2) > div.select.m-b-l > div > ul")
    incoterms_element = driver.find_element_by_css_selector(
        "#getting-paid > div > div:nth-child(3) > div.select.m-b-l > div > ul")

    li_elements = payment_methods_element.find_elements_by_tag_name("li")
    li_elements = payment_terms_element.find_elements_by_tag_name("li")
    li_elements = incoterms_element.find_elements_by_tag_name("li")
    logging.debug("list elements")
    logging.debug(li_elements)
    random_number = 0
    if len(li_elements) > 2:
        random_number = random.randint(1, len(li_elements) - 1)
    random_li_element = li_elements[random_number]
    logging.debug(random_number)
    logging.debug(random_li_element.tag_name)
    logging.debug(random_li_element)
    time.sleep(2)
Beispiel #37
0
class Browser:
  name = None
  capname = None
  supports_alert = True

  def __init__(self):
    self.driver = None
    self.profiledir = None
    self.initialized = False

  def initialSetup(self):
    pass

  def start(self):
    if self.driver:
      raise RuntimeError('%s is already running' % self.name)

    caps = {}
    caps.update(getattr(DesiredCapabilities, self.capname))
    self.prepare_caps(caps)
    self.driver = WebDriver(
      'http://%s:%d/wd/hub' % (self.args.server_host, self.args.server_port),
      desired_capabilities = caps
      )
    self.driver.implicitly_wait(2)

    time.sleep(3)
    for h in self.driver.window_handles[1:]:
      self.driver.switch_to.window(h)
      self.driver.close()
    self.driver.switch_to.window(self.driver.window_handles[0])
    self.driver.switch_to_default_content()

    if not self.initialized:
      self.initialSetup()
      self.initialized = True

  def quit(self):
    try:
      if self.driver:
        self.driver.quit()
        self.driver = None
    except http_client.BadStatusLine:
      pass

  def create_profile(self):
    self.profiledir = os.path.join(self.testdir, 'profile', self.name)
    if os.path.exists(self.profiledir):
      shutil.rmtree(self.profiledir)
    os.makedirs(self.profiledir)
    return self.profiledir

  def set_window_size(self, width, height):
    self.driver.set_window_size(width, height)

  @property
  def url(self):
    return self.driver.current_url

  def wait_page_load(self):
    time.sleep(1)
    self.wait_until(lambda d: self.js('return !!(window.document&&window.document.readyState==="complete")'))

  def open(self, url):
    self.driver.get(url)
    self.wait_page_load()

  def reload(self):
    self.open(self.url)

  def wait_until(self, callback):
    wait = WebDriverWait(self.driver, 20)
    return wait.until(callback)

  def ac(self):
    return ActionChains(self.driver)

  def q(self, selector, context = None):
    if context is None:
      return self.driver.find_element_by_css_selector(selector)
    return context.find_element_by_css_selector(selector)

  def qa(self, selector, context = None):
    if context is None:
      return self.driver.find_elements_by_css_selector(selector)
    return context.find_elements_by_css_selector(selector)

  def x(self, xpath):
    return self.driver.find_element_by_xpath(xpath)

  def xa(self, xpath):
    return self.driver.find_elements_by_xpath(xpath)

  def alert_accept(self):
    if self.supports_alert:
      Alert(self.driver).accept()
    else:
      raise RuntimeError('%s not supports alert handling' % self.name)

  def js(self, script, *args):
    return self.driver.execute_script(script, *args)

  def geom(self, element):
    return self.geom2(element)[:4]

  def geom2(self, element):
    return tuple(map(round, self.js('''
      var elem = arguments[0];
      var rect = elem.getBoundingClientRect();
      return [rect.left, rect.top, rect.width, rect.height,
              rect.left + rect.width, rect.top + rect.height];
    ''', element)))

  def screen_size(self):
    sw, sh = self.js('''
      return [document.documentElement.clientWidth,
              document.documentElement.clientHeight];
    ''')
    return sw, sh


  def set_cookie(self, name, value, domain, path):
    expires = ''
    if value is None:
      value = ''
      expires = '; expires=Thu, 01 Jan 1970 00:00:00 GMT'
    cookie = '%s=%s; domain=%s; path=%s%s' % (name, value, domain, path, expires)
    self.js('document.cookie=%s' % json.dumps(cookie))

  def screenshot(self, elem = None):
    ss = self.driver.get_screenshot_as_png()
    io = util.BytesIO(ss)
    img = Image.open(io)

    if elem is not None:
      x, y, w, h = tuple(map(int, self.geom(elem)))
      img = img.crop((x, y, x + w, y + h))

    return img.convert('RGB')

  def download(self, url, filename):
    dlpath = os.path.join(self.browserdir, filename)
    if not os.path.exists(dlpath) or os.stat(dlpath).st_mtime < time.time() - 60 * 60 * 24:
      util.download(url, dlpath)
    return dlpath

  def read_file_as_base64(self, filename):
    fp = open(filename, 'rb')
    try:
      data = fp.read()
    finally:
      fp.close()
    data = base64.b64encode(data)
    try:
      data = str(data, 'ascii')
    except TypeError:
      pass
    return data
Beispiel #38
0
from selenium import webdriver
from selenium.webdriver import DesiredCapabilities
from selenium.webdriver import ActionChains
from selenium.webdriver.remote.webdriver import WebDriver
from selenium.webdriver.common.keys import Keys

d = WebDriver(
  'http://localhost:%d/wd/hub' % int(sys.argv[1]),
  desired_capabilities = DesiredCapabilities.FIREFOX
  )

d.get('file://%s/key_test.html' % os.path.abspath(os.path.dirname(__file__)))

keys = [
  Keys.LEFT,
  Keys.UP,
  Keys.RIGHT,
  Keys.DOWN,
  Keys.SPACE,
  Keys.ENTER,
  Keys.ESCAPE,
  '\x1b'
  ]

for key in keys:
  ActionChains(d).send_keys(key).perform()

for key in keys:
  d.find_element_by_css_selector('input').send_keys(key)