def test_class_selector_modal_opens(self):
     """
     Creating / Modifying a class opens up the class selector modal
     """
     self.admin_log_in_complete()
     
     self.check_admin_class_modal()
     
     close_modal_x = self.browser.find_element_by_class_name('close')
     close_modal_x.click()
     
     modal_wait = WebDriverWait(self.browser, 5).until(
             EC.invisibility_of_element_located((By.CLASS_NAME,'modal-backdrop')))
     
     #Check that it opens again correctly  
     self.check_admin_class_modal()
     
     cancel_modal_btn = self.browser.find_element_by_link_text('Cancel')
     cancel_modal_btn.click()
     
     modal_wait = WebDriverWait(self.browser, 5).until(
             EC.invisibility_of_element_located((By.CLASS_NAME,'modal-backdrop')))
     
     #Check that it opens again correctly   
     self.check_admin_class_modal()
    def test_plot(self):

        wait = WebDriverWait(self.driver, 10)
        wait.until(EC.invisibility_of_element_located((By.CSS_SELECTOR, 'md-progress-linear.loader.md-default-theme')))
        since_dropdown = ["YESTERDAY", "WEEK_TO_DATE", "MONTH_TO_DATE", "YEAR_TO_DATE"]

        for css_selector in since_dropdown:

            # Click on 'Since' field to filter
            self.driver.find_element_by_css_selector('#select_value_label_5 > span').click()

            time.sleep(0.5)

            # Click on the desired option from the dropdown according to the list [eg. '29' is for 'custom date range']
            self.driver.find_element_by_css_selector('md-option[value = {0}] > div'.format(css_selector)).click()

            # Click on refresh data button
            self.driver.find_element_by_css_selector(
                '.ads-dashboard > div:nth-child(1) > div:nth-child(3) > div:nth-child(1) > md-card:nth-child(1) >'
                ' md-card-content:nth-child(1) > div:nth-child(3) > div:nth-child(1) > button:nth-child(1)').click()

            # Find loader and wait for it to disappear
            self.driver.find_element_by_css_selector('md-progress-linear.loader.md-default-theme')
            wait.until(EC.invisibility_of_element_located((By.CSS_SELECTOR, 'md-progress-linear.loader.md-default-theme')))

            if css_selector == "YESTERDAY":

                graph_start_date = self.driver.find_element_by_css_selector('.flot-x-axis > div:nth-child(1)').text
                calculated_start_date = (datetime.datetime.now() - datetime.timedelta(days=1)).strftime('%b %d')

                self.assertEqual(graph_start_date, str(calculated_start_date))

            if css_selector == "WEEK_TO_DATE":

                graph_start_date = self.driver.find_element_by_css_selector('.flot-x-axis > div:nth-child(1)').text
                graph_end_date = self.driver.find_element_by_css_selector('.flot-x-axis > div:nth-last-child(1)').text
                calculated_start_date = (datetime.datetime.now() - datetime.timedelta(days=7)).strftime('%b %d')
                calculated_end_date = (datetime.datetime.now() - datetime.timedelta(days=1)).strftime('%b %d')

                self.assertEqual(graph_start_date, str(calculated_start_date))
                self.assertEqual(graph_end_date, str(calculated_end_date))

            if css_selector == "MONTH_TO_DATE":

                graph_start_date = self.driver.find_element_by_css_selector('.flot-x-axis > div:nth-child(1)').text
                graph_end_date = self.driver.find_element_by_css_selector('.flot-x-axis > div:nth-last-child(1)').text
                calculated_start_date = datetime.datetime.now().strftime('%b 01')
                calculated_end_date = (datetime.datetime.now() - datetime.timedelta(days=1)).strftime('%b %d')

                self.assertEqual(graph_start_date, str(calculated_start_date))
                self.assertEqual(graph_end_date, str(calculated_end_date))

            if css_selector == "YEAR_TO_DATE":

                graph_start_date = self.driver.find_element_by_css_selector('.flot-x-axis > div:nth-child(1)').text
                calculated_start_date = datetime.datetime.now().strftime('Jan 01')

                print calculated_start_date

        self.driver.find_element_by_css_selector('smart-resource-loader.ng-isolate-scope:nth-child(1) > div:nth-child(1).text')
def test_submit_assignment(browser, port, class_files, tempdir):
    _load_assignments_list(browser, port)

    # submit it
    _wait(browser).until(EC.invisibility_of_element_located((By.CSS_SELECTOR, "#fetched_assignments_list_placeholder")))
    rows = browser.find_elements_by_css_selector("#fetched_assignments_list > .list_item")
    rows[0].find_element_by_css_selector(".item_status button").click()

    # wait for the submitted assignments list to update
    _wait(browser).until(EC.invisibility_of_element_located((By.CSS_SELECTOR, "#submitted_assignments_list_placeholder")))
    rows = browser.find_elements_by_css_selector("#submitted_assignments_list > .list_item")
    assert len(rows) == 1
    assert rows[0].find_element_by_class_name("item_name").text == "ps.01"
    assert rows[0].find_element_by_class_name("item_course").text == "xyz 200"

    # submit it again
    rows = browser.find_elements_by_css_selector("#fetched_assignments_list > .list_item")
    rows[0].find_element_by_css_selector(".item_status button").click()

    # wait for the submitted assignments list to update
    _wait(browser).until(lambda browser: len(browser.find_elements_by_css_selector("#submitted_assignments_list > .list_item")) == 2)
    rows = browser.find_elements_by_css_selector("#submitted_assignments_list > .list_item")
    rows.sort(key=_sort_rows)
    assert rows[0].find_element_by_class_name("item_name").text == "ps.01"
    assert rows[0].find_element_by_class_name("item_course").text == "xyz 200"
    assert rows[1].find_element_by_class_name("item_name").text == "ps.01"
    assert rows[1].find_element_by_class_name("item_course").text == "xyz 200"
    assert rows[0].find_element_by_class_name("item_status").text != rows[1].find_element_by_class_name("item_status").text
Exemple #4
0
def wait_for_element_to_disappear(driver, _debug, ele, etype, timeout):
    """ this function monitors a html page before executing the script further
        and waits for an element to disappear

        args:
            driver  - selenium driver object
            ele     - element to wait for
            etype   - element time (could be ID or NAME)
            timeout - time to wait in seconds

        returns:
            True - in case the element was found
            False - if timeout kicks in and aborts the function
    """
    try:
        if etype == 'id':
            element_not_present = EC.invisibility_of_element_located((By.ID, ele))
        elif etype == 'name':
            element_not_present = EC.invisibility_of_element_located((By.NAME, ele))
        elif etype == 'class':
            element_not_present = EC.invisibility_of_element_located((By.CLASS_NAME, ele))
        else:
            element_not_present = EC.invisibility_of_element_located((By.NAME, ele))

        WebDriverWait(driver, timeout).until(element_not_present)
        return True
    except TimeoutException:
        print("Timed out waiting for element to disappear")
        return False
 def test_help_modal_opens_and_closes(self):
     """
     The Help modal opens on click and closes on exit or blur
     """
     # Jane has some questions about the tool and sees a 'help' button in the menu. She
     # clicks it and is shown a window describing the Video Concept browser and a
     # point of contact at OEIT.
     self.student_log_in_complete()
     class_name = self.new_class_session.class_name
     
     side_nav_menu = self.browser.find_elements_by_class_name('nav-header')
     self.assertTrue(class_name, [nav_header.text for nav_header in side_nav_menu])
             
     # Check the help modal is present but not viewable
     help_modal = self.browser.find_element_by_id('help_modal')
     self.assertFalse(help_modal.is_displayed())
     
     help_link = self.browser.find_element_by_class_name('nav-help')
     help_link.click()
     
     modal_wait = WebDriverWait(self.browser, 5).until(
             EC.visibility_of_element_located((By.ID,'help_modal')))
     
     self.assertTrue(help_modal.is_displayed())
     modal_background = self.browser.find_element_by_class_name('reveal-modal-bg')
     self.assertTrue(modal_background.is_displayed())
     
     close_modal_link = self.browser.find_element_by_class_name('close-reveal-modal')
     close_modal_link.click()
     
     modal_wait = WebDriverWait(self.browser, 5).until(
             EC.invisibility_of_element_located((By.ID,'help_modal')))
     modal_wait = WebDriverWait(self.browser, 5).until(
             EC.invisibility_of_element_located((By.CLASS_NAME,'reveal-modal-bg')))
             
     self.assertFalse(help_modal.is_displayed())
     
     # Repeat but test close by clicking outside of the modal
     help_link.click()
     
     modal_wait = WebDriverWait(self.browser, 5).until(
             EC.visibility_of_element_located((By.ID,'help_modal')))
             
     self.assertTrue(help_modal.is_displayed())
     self.assertTrue(modal_background.is_displayed())
     
     builder = ActionChains(self.browser)    
     
     click_outside_modal = builder.move_to_element(modal_background) \
                                  .move_by_offset(-500, -300) \
                                  .click()
     
     click_outside_modal.perform()
     
     modal_wait = WebDriverWait(self.browser, 5).until(
             EC.invisibility_of_element_located((By.ID,'help_modal')))
     modal_wait = WebDriverWait(self.browser, 5).until(
             EC.invisibility_of_element_located((By.CLASS_NAME,'reveal-modal-bg')))
                     
     self.assertFalse(help_modal.is_displayed())
 def click_back_to_file_content_modal_button(self):
     """
     Clicks back file content modal.
     """
     self._wait.until(ec.invisibility_of_element_located(self._changes_successfully_saved))
     click_element(self._driver, self._driver.find_element(*self._back_button))
     self._wait.until(ec.invisibility_of_element_located(self._annotation_panel))
def _wait_for_list(browser, name, num_rows):
    _wait(browser).until(EC.invisibility_of_element_located((By.CSS_SELECTOR, "#{}_assignments_list_loading".format(name))))
    _wait(browser).until(EC.invisibility_of_element_located((By.CSS_SELECTOR, "#{}_assignments_list_placeholder".format(name))))
    _wait(browser).until(lambda browser: len(browser.find_elements_by_css_selector("#{}_assignments_list > .list_item".format(name))) == num_rows)
    rows = browser.find_elements_by_css_selector("#{}_assignments_list > .list_item".format(name))
    assert len(rows) == num_rows
    return rows
    def test_MDT_enter_bid_invalid_qty(self):
        WebDriverWait(self.driver, 5).until(EC.element_to_be_clickable((By.XPATH, self.helper.get_xpath("create_workspace_btn"))))

        workspace_name = "MDT Enter Bid Invalid Qty"
        return_msg = self.helper.open_new_workspace(workspace_name)
        self.assertEqual(return_msg, "OK", "Call to open_new_workspace failed: '" + return_msg + "'")
        
        #Verify the name of the workspace window that pops up
        self.driver.switch_to_window(self.driver.window_handles[-1])
        window_name = self.driver.title
        self.assertEqual(window_name, workspace_name, "Workspace window does not match name of workspace")

        #Make sure the user has a valid connection
        return_msg = self.helper.is_valid_connection()
        self.assertEqual(return_msg, "Connected", "Call to is_valid_connection failed: '" + return_msg + "'")

        #Open MDT window
        workspace_windows = ['mdt']
        self.assertTrue(self.helper.populate_workspace(workspace_windows), "Call to populate_workspace failed")

        #Find bid price with qty in MDT window and attempt to enter order
        self.driver.find_element_by_xpath(self.helper.get_xpath("mdt_bid_has_value")).click()

        #Verify message box appears for invalid order quantity
        what = self.helper.get_xpath("mdt_invalid_qty")
        WebDriverWait(self.driver, 5).until(EC.presence_of_element_located((By.XPATH, what)))
        element = self.driver.find_element_by_xpath(what)
        self.assertEqual(element.text, "Invalid order quantity: 0", "Invalid order quantity message not found")

        #Verify there is no bid price with a working qty (i.e. the order was never entered)
        WebDriverWait(self.driver, 5).until(EC.invisibility_of_element_located((By.XPATH, self.helper.get_xpath("mdt_working_bid_price"))))

        #Close message box and verify it is no longer visible
        self.driver.find_element_by_xpath(self.helper.get_xpath("mdt_invalid_qty_close_btn")).click()
        WebDriverWait(self.driver, 5).until(EC.invisibility_of_element_located((By.XPATH, self.helper.get_xpath("mdt_invalid_qty"))))
Exemple #9
0
def checkStatus(step,selector,visible):
    # element = world.browser.find_element_by_css_selector(selector)
    if visible ==  "invisible" :
        EC.invisibility_of_element_located((By.CSS_SELECTOR,selector))
    elif visible ==  "visible" :
        EC.visibility_of_element_located((By.CSS_SELECTOR,selector))
    else :
        assert True == False, "Incorrect command (invisible or visible) : %s" % visible
 def testExpectedConditionInvisiblityOfElementLocated(self, driver, pages):
     pages.load("javascriptPage.html")
     driver.execute_script("delayedShowHide(0, true)")
     with pytest.raises(TimeoutException):
         WebDriverWait(driver, 0.7).until(EC.invisibility_of_element_located((By.ID, 'clickToHide')))
     driver.execute_script("delayedShowHide(200, false)")
     element = WebDriverWait(driver, 0.7).until(EC.invisibility_of_element_located((By.ID, 'clickToHide')))
     assert element.is_displayed() is False
 def click_done(self):
     self._webd_wrap.wait.until(EC.invisibility_of_element_located((By.ID, 'receive_author_emails')))
    
     _elt = self._webd_wrap._driver.find_element_by_id('sign-in-modal').find_element_by_xpath('footer/a')
     self._webd_wrap._driver.execute_script("(arguments[0]).click()", _elt)
     
     # confirms the modal is gone
     self._webd_wrap.wait.until(EC.invisibility_of_element_located((By.CLASS_NAME, 'fancybox-inner')))
 def testExpectedConditionInvisiblityOfElementLocated(self, driver, pages):
     if driver.capabilities['browserName'] == 'firefox' and driver.w3c:
         pytest.xfail("Marionette issue: https://bugzilla.mozilla.org/show_bug.cgi?id=1297551")
     pages.load("javascriptPage.html")
     driver.execute_script("delayedShowHide(0, true)")
     with pytest.raises(TimeoutException):
         WebDriverWait(driver, 0.7).until(EC.invisibility_of_element_located((By.ID, 'clickToHide')))
     driver.execute_script("delayedShowHide(200, false)")
     element = WebDriverWait(driver, 0.7).until(EC.invisibility_of_element_located((By.ID, 'clickToHide')))
     assert element.is_displayed() is False
Exemple #13
0
 def click_download_batch_button(self):
     """
     Clicks the Download button in Batch Image Order section.
     """
     try:
         click_element(self._driver, self._driver.find_element(*self._apply_keywords_button))
         self._wait.until(ec.invisibility_of_element_located(self._apply_keywords_button))
     except TimeoutException:
         self._driver.find_element(*self._apply_keywords_button).click()
         self._wait.until(ec.invisibility_of_element_located(self._apply_keywords_button))
    def test_MDT_clear_reset(self):
        WebDriverWait(self.driver, 5).until(EC.element_to_be_clickable((By.XPATH, self.helper.get_xpath("create_workspace_btn"))))

        workspace_name = "MDT Clear Reset"
        return_msg = self.helper.open_new_workspace(workspace_name)
        self.assertEqual(return_msg, "OK", "Call to open_new_workspace failed: '" + return_msg + "'")
        
        #Verify the name of the workspace window that pops up
        self.driver.switch_to_window(self.driver.window_handles[-1])
        window_name = self.driver.title
        self.assertEqual(window_name, workspace_name, "Workspace window does not match name of workspace")

        #Make sure the user has a valid connection
        return_msg = self.helper.is_valid_connection()
        self.assertEqual(return_msg, "Connected", "Call to is_valid_connection failed: '" + return_msg + "'")

        #Open MDT and order book windows
        workspace_windows = ['mdt', 'order_book']
        self.assertTrue(self.helper.populate_workspace(workspace_windows), "Call to populate_workspace failed")

        #Click confiuration drop down icon and then click Configure, update default qty to 2 and then save the default value
        WebDriverWait(self.driver, 5).until(EC.element_to_be_clickable((By.XPATH, self.helper.get_xpath("mdt_configuration_dropdown")))).click()
        WebDriverWait(self.driver, 5).until(EC.element_to_be_clickable((By.XPATH, self.helper.get_xpath("mdt_configure")))).click()
        WebDriverWait(self.driver, 5).until(EC.element_to_be_clickable((By.XPATH, self.helper.get_xpath("mdt_default_qty")))).send_keys("2")
        WebDriverWait(self.driver, 5).until(EC.element_to_be_clickable((By.XPATH, self.helper.get_xpath("mdt_configure_save")))).click()

        #Click 'C' button to clear qty
        WebDriverWait(self.driver, 5).until(EC.element_to_be_clickable((By.XPATH, self.helper.get_xpath("mdt_clear")))).click()

        #Find bid price with qty in MDT window and attempt to enter order
        self.driver.find_element_by_xpath(self.helper.get_xpath("mdt_bid_has_value")).click()

        #Verify message box appears for invalid order quantity
        what = self.helper.get_xpath("mdt_invalid_qty")
        WebDriverWait(self.driver, 5).until(EC.presence_of_element_located((By.XPATH, what)))
        element = self.driver.find_element_by_xpath(what)
        self.assertEqual(element.text, "Invalid order quantity: 0", "Invalid order quantity message not found")

        #Verify there is no bid price with a working qty (i.e. the order was never entered)
        WebDriverWait(self.driver, 5).until(EC.invisibility_of_element_located((By.XPATH, self.helper.get_xpath("mdt_working_bid_price"))))

        #Close message box and verify it is no longer visible
        self.driver.find_element_by_xpath(self.helper.get_xpath("mdt_invalid_qty_close_btn")).click()
        WebDriverWait(self.driver, 5).until(EC.invisibility_of_element_located((By.XPATH, self.helper.get_xpath("mdt_invalid_qty"))))

        #Set qty to 1 and the click reset button to set qty back to 2
        WebDriverWait(self.driver, 5).until(EC.element_to_be_clickable((By.XPATH, self.helper.get_xpath("mdt_qty1_btn")))).click()
        WebDriverWait(self.driver, 5).until(EC.element_to_be_clickable((By.XPATH, self.helper.get_xpath("mdt_reset")))).click()

        #Find bid price with qty in MDT window and attempt to enter order
        self.driver.find_element_by_xpath(self.helper.get_xpath("mdt_bid_has_value")).click()

        #Verify values in order book
        return_msg = self.helper.validate_order(qty=2)
        self.assertEqual(return_msg, "OK", "Call to validate_order failed: '" + return_msg + "'")        
 def testExpectedConditionInvisiblityOfElementLocated(self):
     self._loadPage("javascriptPage")
     self.driver.execute_script("delayedShowHide(0, true)")
     try:
         WebDriverWait(self.driver, 0.7).until(EC.invisibility_of_element_located((By.ID, 'clickToHide')))
         self.fail("Expected TimeoutException to have been thrown")
     except TimeoutException as e:
         pass
     self.driver.execute_script("delayedShowHide(200, false)")
     element = WebDriverWait(self.driver, 0.7).until(EC.invisibility_of_element_located((By.ID, 'clickToHide')))
     self.assertFalse(element.is_displayed())
	def clear_tryon_items(self):
		self.choose_tryon_items()
		clear = WebDriverWait(self.webdriver, 10).until(EC.visibility_of_element_located((By.ID, "Clear")))
		clear.click()
		WebDriverWait(self.webdriver, 10).until(EC.invisibility_of_element_located((By.ID, "cur_item_577")), 'Timed Out')
		WebDriverWait(self.webdriver, 10).until(EC.invisibility_of_element_located((By.ID, "cur_item_42")), 'Timed Out')
		WebDriverWait(self.webdriver, 10).until(EC.invisibility_of_element_located((By.ID, "tryimgtmp577")), 'Timed Out')
		try:
			WebDriverWait(self.webdriver, 10).until(EC.invisibility_of_element_located((By.ID, "tryimgtmp42")), 'Timed Out')
			return True
		except TimeoutException:
			return False
 def add_new_email(self):
     WebDriverWait(self.driver, 10).until(
         lambda driver: EC.invisibility_of_element_located(driver.find_element_by_xpath(self.MAILBOX_PRELOADER))
     )
     WebDriverWait(self.driver, 10).until(
         EC.visibility_of_element_located((By.XPATH, self.ADD_EMAIL_BUTTON))
     )
     self.driver.find_element_by_xpath(self.ADD_EMAIL_BUTTON).click()
     WebDriverWait(self.driver, 10).until(
         lambda driver: EC.invisibility_of_element_located(driver.find_element_by_xpath(self.PRELOADER))
     )
     WebDriverWait(self.driver, 10).until(
         lambda driver: EC.element_to_be_clickable(driver.find_element_by_xpath(self.LOGIN_FORM))
     )
	def select_background(self, background):
		driver = InterfaceTest.driver
		wait = InterfaceTest.wait

		side_hover = driver.find_element_by_id("viewMenuHover")
		ActionChains(InterfaceTest.driver).move_to_element(side_hover).perform()
		background_button = wait.until(ec.element_to_be_clickable((by.XPATH, "//*[contains(text(), 'Change Background')]")))
		wait.until(ec.invisibility_of_element_located((by.ID, "change-background-modal")))
		background_button.click()
		background_list = wait.until(ec.element_to_be_clickable((by.ID, "change-background-list")))
		select = Select(background_list)
		select.select_by_visible_text(background)
		driver.find_element_by_id("submit-change-background").click()
		wait.until(ec.invisibility_of_element_located((by.ID, "template-modal")))
		wait.until(ec.invisibility_of_element_located((by.ID, "change-background-modal")))
Exemple #19
0
  def remove_test_user(self, name, server_url, should_raise_exception=True):
    """Manually remove a test user using the landing page (the only way).

    Args:
      name: A string for the name of the test user to remove.
      server_url: The base url portion of the landing page.
      should_raise_exception: True to raise an exception if the user is not
                              found.
    """
    self.go_to_landing_page(server_url)

    # Find the user and navigate to their details page.
    user_item = self.findTestUser(name)

    if user_item is None:
      if should_raise_exception:
        raise Exception
      else:
        return
    else:
      user_item.click()

    # Click delete on that user.
    details_modal = user_item.find_element(*LandingPage.DETAILS_MODAL)
    WebDriverWait(self.driver, UfOPageLayout.DEFAULT_TIMEOUT).until(
        EC.visibility_of(details_modal))
    delete_button = details_modal.find_element(*LandingPage.USER_DELETE_BUTTON)
    delete_button.click()

    # Wait for post to finish, can take a while.
    WebDriverWait(self.driver, UfOPageLayout.DEFAULT_TIMEOUT).until(
        EC.invisibility_of_element_located(((
            LandingPage.USER_DETAILS_SPINNER))))
Exemple #20
0
    def test_unlink_directory(self):
        init_test_dirs()
        a = Directory.objects.get(name="a")
        ab_a = Directory.objects.get(name="ab_a")
        ab_a_a = Directory.objects.get(name="ab_a_a")

        self.go_to_home_page()
        self.enter_into_dir(a.name)
        self.enter_into_dir(ab_a.name)

        ab_a_a_css = 'a[directory-id="%d"]' % ab_a_a.id

        # ensure the directory `ab_a_a` exists
        self.browser.find_element_by_css_selector(ab_a_a_css)

        # unlink ab_a_a
        unlink_elements = self.browser.find_elements_by_css_selector("a.btn-unlink-directory")
        unlink_elements[0].click()
        self.browser.find_element_by_css_selector("button.btn-confirmed").click()

        # check that the directory is unlinked
        WebDriverWait(self.browser, 1).until(EC.invisibility_of_element_located((By.CSS_SELECTOR, ab_a_a_css)))
        self.assertNotInDirectoryTable(ab_a_a.name)

        # we can find it in the home page
        self.go_to_home_page(refresh=False)
        self.assertInDirectoryTable(ab_a_a.name)
 def scarica_bolla(self, tipo_bolla):
     '''Procedura di raccolta dati bolla dal portale adriaticapress e scrittura
     su file csv. tipo_bolla può essere uno dei 2 valori ['B', 'C']
     '''
     #Inserisco elemento di controllo sul caricamento della bolla vera e propria
     elemento_controllo = WebDriverWait(self.dr, 300).until(EC.invisibility_of_element_located((By.ID, 'loaderBodyPage')))
     time.sleep(1)
     #Rendo header statico, così da non interferier nello scroll
     self.dr.execute_script('$(".superHeader").css({position: "static"});')
     time.sleep(1)
     lista_bolla = [['testata tipo', '12345', '12345', '123456789012345678', '99.00']]
     elenco_link_testate = self.dr.find_elements_by_css_selector('a[id^=\"ctl00_MainContent_dlBolla_ctl\"]')
     for link in elenco_link_testate:
         dati_testata = []
         #Assicurarsi che il link sia visibile prima di clickarlo
         self.dr.execute_script('arguments[0].scrollIntoView();', link)
         link.click()
         nome_testata = WebDriverWait(self.dr, 300).until(EC.presence_of_element_located((By.ID, 'lblTitoloDettaglio'))).text.replace(',', '.')
         identificativo_testata = self.dr.find_element_by_id('lblCodice').text
         numero_testata = self.dr.find_element_by_id('lblNumeroDettaglio').text
         prezzo_testata = self.dr.find_element_by_id('lblPrezzoDettaglio').text[2:].replace(',', '.')
         try:
             barcode_testata = self.dr.find_element_by_id('lblBarcodeDettaglio').text
         except NoSuchElementException:
             barcode_testata = '3103{}'.format(str(randrange(1, 99999999999999)).zfill(14))
         dati_testata.extend([nome_testata, identificativo_testata, numero_testata, barcode_testata, prezzo_testata])
         lista_bolla.append(dati_testata)
     with open(PATH_BOLLA_SCARICATA, 'w') as output_file:
         output_writer = csv.writer(output_file)
         for row in lista_bolla:
             output_writer.writerow(row)
     return self.mio_testo.insertPlainText('{} File {} creato\n'.format(time.strftime('%H:%M'), output_file.name))
Exemple #22
0
    def wait_until_element_is_not_visible(
            self, locator, timeout=12, poll_frequency=0.5):
        """Wrapper around Selenium's WebDriver that allows us to pause our test
        until specified element will disappear. That means that it will not be
        present and will not be visible anymore.

        :param locator: Locator of element under test
        :param timeout: How long this method should wait for the element to
            disappear (in seconds)
        :param poll_frequency: How frequently this method should check for the
            presence of the element (in seconds)
        :returns: If the page element still present after timeout expired,
            return None. Otherwise, return True.

        """
        try:
            WebDriverWait(self.browser, timeout, poll_frequency).until(
                expected_conditions.invisibility_of_element_located(locator))
            self.wait_for_ajax(poll_frequency=poll_frequency)
            return True
        except TimeoutException as err:
            self.logger.debug(
                "%s: Timed out waiting for element '%s' to disappear.",
                type(err).__name__,
                locator[1]
            )
            return None
 def inserimento_vendite(self):
     '''Procedura di immissione delle vendite su adriaticapress
     '''
     self.dr.get('{}Vendita.htm'.format(ip_ap))
     time.sleep(5)
     elemento_controllo = WebDriverWait(self.dr, 300).until(EC.invisibility_of_element_located((By.ID, 'loaderBodyPage')))
     time.sleep(5)
     self.dr.find_element_by_id('imgMostraRicerca').click()
     input_ean = self.dr.find_element_by_name('txtTitoloRI')
     input_qtt = self.dr.find_element_by_name('txtQ')
     wb = load_workbook(PATH_FILE_VENDITE)
     ws = wb.get_sheet_by_name('ExportExcel')
     righe_con_dati = ws.max_row - 1
     for riga in ws.iter_rows(min_row=3, max_row=righe_con_dati):
         descrizione, ean, copie = riga
         time.sleep(2)
         input_ean.clear()
         input_ean.send_keys(ean.value)
         input_qtt.clear()
         input_qtt.send_keys(copie.value)
         input_ean.send_keys(Keys.RETURN)
     os.remove(PATH_FILE_VENDITE)
     time.sleep(3)
     self.dr.find_element_by_id('ibCassa').click()
     return self.mio_testo.insertPlainText('{} Vendite caricate\n'.format(time.strftime('%H:%M')))
	def wait_for(self, selector=None, everywhere=False, timeout=20, xpath=None, for_invisible=False):
		if self.cur_route and not everywhere:
			selector = self.cur_route + " " + selector

		time.sleep(0.5)

		if selector:
			_by = By.CSS_SELECTOR
		if xpath:
			_by = By.XPATH
			selector = xpath

		try:
			if not for_invisible:
				elem = self.get_wait(timeout).until(
					EC.presence_of_element_located((_by, selector)))
			else:
				elem = self.get_wait(timeout).until(
					EC.invisibility_of_element_located((_by, selector)))
			return elem
		except Exception as e:
			# body = self.driver.find_element_by_id('body_div')
			# print(body.get_attribute('innerHTML'))
			self.print_console()
			raise e
 def click_flag_button(self):
     """
     Clicks the Flag button.
     """
     self._wait.until(ec.invisibility_of_element_located(self._flag_selected_button))
     self._driver.find_element(*self._flag_button).click()
     self._wait.until(ec.visibility_of_element_located(self._flag_selected_button))
Exemple #26
0
 def close_modal(self):
     self._confirm_modal()
     
     _close = self._webd_wrap._driver.find_element_by_class_name('fancybox-skin').find_element_by_xpath('a')
     self._webd_wrap._driver.execute_script("(arguments[0]).click()", _close)
     
     self._webd_wrap.wait.until(EC.invisibility_of_element_located((By.CLASS_NAME, 'fancybox-inner')))
 def click_create_new_version_button(self):
     """
     Clicks Create New Version button.
     """
     self._driver.find_element(*self._create_new_version_button).click()
     self._wait.until(ec.invisibility_of_element_located(self._create_new_version_button))
     self._wait.until(ec.visibility_of_element_located(self._version_tab))
    def test_name_filter_works(self):
        text_to_find, text_to_not_find = self.search_test_helper()
        # o should be in both of the experiences
        self.client.get(reverse('search') + '?search=' + 'o')
        name_filter = self.driver.find_element(
            By.XPATH,
            '//table[@id="search-results"]//td[position()=%i]//*[contains(@class, "tablesorter-filter")]' % self.get_name_column_index()
        )

        # verify the element is shown
        self.assertTrue(
            self.get_table_entries_by_name(text_to_not_find)[0].is_displayed(),
            'The element should first be displayed to later be hidden.'
        )
        name_filter.send_keys(text_to_find)
        name_filter.send_keys(Keys.RETURN)

        # verify the element is not shown
        wait = WebDriverWait(self.driver, 1)
        wait.until(
            expected_conditions.invisibility_of_element_located(
                (By.XPATH, self.get_table_entries_by_name_xpath(text_to_not_find))
            )
        )
        self.assertFalse(
            self.get_table_entries_by_name(text_to_not_find)[0].is_displayed(),
            'The element should not be visible.'
        )
 def hide_tooltip(self, css_selector):
     """Hide the tooltip by moving to a tooltip-less element."""
     # The below element (ui-id-1) is specific to Options page.
     el_no_hover = self.driver.find_element_by_id("ui-id-1")
     ActionChains(self.driver).move_to_element(el_no_hover).perform()
     WebDriverWait(self.driver, 5).until(EC.invisibility_of_element_located(
         (By.CSS_SELECTOR, css_selector)))
Exemple #30
0
 def wait_for_spinner_absence(self):
     element = None
     try:
         element = WebDriverWait(self.driver, self.maxwait).until(EC.invisibility_of_element_located((By.ID, 'spinner')))
     except TimeoutException:
         raise ElementTimeoutException("spinner")
     return element
Exemple #31
0
 def submit(self):
     self.wait.until(
         EC.invisibility_of_element_located(self.MENU_TERM)
         and EC.invisibility_of_element_located(self.MENU_PURPOSE))
     self.click(*self.SUBMIT)
     return CompanySearch(self.driver_adapter)
Exemple #32
0
 def wait_until(self):
     wait = WebDriverWait(self.driver, 100)
     wait.until(EC.invisibility_of_element_located((By.XPATH, Locators.wait_xpath)))
Exemple #33
0
        Unsuccessful_Application_Downloads.append(FirstLast_Name.value)
        print(
            str(datetime.datetime.now().strftime("%I:%M:%S %p")) +
            " Download of " + str(FirstLast_Name.value) +
            "'s application was unsuccessful.")
        continue

    try:
        download_button = driver.find_element_by_xpath(
            "//*[@title='Bulk Download']")
        download_button.click()
        PDF_button = driver.find_element_by_xpath("//button/mat-icon[1]")
        PDF_button.click()
        element = WebDriverWait(driver, 150).until(
            EC.invisibility_of_element_located(
                (By.XPATH,
                 "//*[@class='spinner-container ng-star-inserted']")))
        time.sleep(1.5)

    except:
        EC.visibility_of_element_located(
            (By.XPATH, "//*[@class='spinner-container ng-star-inserted']"))
        print("still loading")
        htmlElem = driver.find_element_by_tag_name('html')
        htmlElem.send_keys(Keys.F5)
        driver.get(
            "https://ogs.sgs.utoronto.ca/applicant/(main:submitted-forms)")
        try:
            element = WebDriverWait(driver, 120).until(
                EC.presence_of_element_located(
                    (By.ID, "cdk-accordion-child-0")))
             "#listMenu-id-2 > li:nth-child(2) > a:nth-child(1)")))
    wd.find_element_by_css_selector(
        "#listMenu-id-2 > li:nth-child(2) > a:nth-child(1)").click()

    # switch to article page, get html
    wd.switch_to_window(wd.window_handles[2])
    html = re.sub(r'<style.*<\/style>', '',
                  unicode(wd.page_source).encode("utf-8"))
    html = re.sub(r'<input.*/>', '', html)
    document = open(str(dest) + '/data' + str(doc_id) + '.html', 'w')
    document.write(html)
    document.close()
    wd.close()

    # go back and click the next button
    doc_id += 1
    wd.switch_to_window(wd.window_handles[1])
    wd.find_element_by_css_selector("#clearAll > input:nth-child(1)").click()
    wait.until(
        EC.visibility_of_element_located(
            (By.CSS_SELECTOR, "#selectAll > input:nth-child(1)")))
    wd.find_element_by_css_selector("a.nextItem").click()
    try:
        wait.until(
            EC.invisibility_of_element_located((
                By.CSS_SELECTOR,
                "#_ceprogressindicator > td:nth-child(1) > div:nth-child(1) > img:nth-child(1)"
            )))
    except:
        time.sleep(2)
Exemple #35
0
 def is_invisibility(self, locator, timeout=10):
     '''元素不可见返回True,可见返回本身'''
     result = WebDriverWait(self.driver, timeout, 1).until(
         EC.invisibility_of_element_located(locator))
     return result
 def select_submenu(self, submenu_link):
     self.browser.find_element_by_xpath(self.sub_menu_xpath %
                                        submenu_link).click()
     # wait until submenu page is opened
     WebDriverWait(self.browser, 10).until(
         EC.invisibility_of_element_located(self.main_tab))
def wait_until_element_located_disappear(driver, locator: str, by=By.ID):
    WebDriverWait(driver, 2).until(
        expected_conditions.invisibility_of_element_located((by, locator)))
Exemple #38
0
def test_user_ranking_course(driver):
    '''Creates a course and students to participate make submits to problems'''

    run_id = driver.generate_id()
    course_alias = f'ut_rank_course_{run_id}'
    school_name = f'ut_rank_school_{run_id}'
    assignment_alias = f'ut_rank_hw_{run_id}'
    problem = 'sumas'

    _setup_course(driver, course_alias, school_name, assignment_alias, problem)

    with driver.login_user():
        enter_course(driver, course_alias, assignment_alias)
        _click_on_problem(driver, problem)

        util.create_run(driver, problem, 'Main.cpp17-gcc')
        driver.update_score_in_course(problem, assignment_alias)

        # Refresh the current page.
        with driver.page_transition():
            driver.browser.get(driver.browser.current_url.split('#')[0])

        _click_on_problem(driver, problem)

        # When user has tried or solved a problem, feedback popup will be shown
        with util.dismiss_status(driver):
            driver.wait.until(
                EC.element_to_be_clickable(
                    (By.CSS_SELECTOR, '.popup button.close'))).click()
            driver.wait.until(
                EC.invisibility_of_element_located(
                    (By.CSS_SELECTOR, '.popup button.close')))

        driver.wait.until(
            EC.element_to_be_clickable(
                (By.XPATH, ('//a[contains(text(), "%s")]/parent::div' %
                            problem.title())))).click()
        driver.wait.until(
            EC.element_to_be_clickable(
                (By.CSS_SELECTOR, 'button[data-run-details]'))).click()

        assert (('show-run:')
                in driver.browser.current_url), driver.browser.current_url

    update_scoreboard_for_assignment(driver, assignment_alias, course_alias)

    with driver.login_admin():
        enter_course_assignments_page(driver, course_alias)
        with driver.page_transition():
            driver.wait.until(
                EC.element_to_be_clickable(
                    (By.XPATH,
                     '//a[contains(@href, "/assignment/%s/scoreboard/")]' %
                     assignment_alias))).click()

        toggle_contestants_element = driver.wait.until(
            EC.element_to_be_clickable(
                (By.CSS_SELECTOR, 'input.toggle-contestants')))
        for _ in range(10):
            toggle_contestants_element.click()
            if not toggle_contestants_element.is_selected():
                break
        else:
            logging.error('Failed to toggle contestants')

        run_user = driver.browser.find_element_by_xpath(
            '//td[contains(@class, "accepted")]/preceding-sibling::td[@class='
            '"user"]')
        assert run_user.text == driver.user_username, run_user

        url = '/course/{}/assignment/{}/scoreboard'.format(
            course_alias, assignment_alias)

        enter_course_assignments_page(driver, course_alias)
        util.check_scoreboard_events(driver,
                                     assignment_alias,
                                     url,
                                     num_elements=1,
                                     scoreboard='Public')

        enter_course_assignments_page(driver, course_alias)
        util.check_scoreboard_events(driver,
                                     assignment_alias,
                                     url,
                                     num_elements=1,
                                     scoreboard='Admin')

        enter_course_assignments_page(driver, course_alias)
        with driver.page_transition():
            driver.wait.until(
                EC.element_to_be_clickable(
                    (By.XPATH, '//a[contains(@href, "/course/%s/edit/")]' %
                     course_alias))).click()

        driver.wait.until(
            EC.element_to_be_clickable((
                By.XPATH,
                '//input[@name = "show-scoreboard"][@value="true"]'))).click()

        driver.browser.find_element_by_tag_name('form').submit()
        assert (('/course/%s/edit/' % course_alias)
                in driver.browser.current_url), driver.browser.current_url

    with driver.login_user():
        enter_course(driver, course_alias, assignment_alias, first_time=False)

        for _ in range(10):
            driver.wait.until(
                EC.element_to_be_clickable(
                    (By.XPATH, ('//a[contains(@href, "#ranking")]')))).click()
            if driver.browser.current_url.endswith(f'#ranking'):
                break
        assert (('#ranking')
                in driver.browser.current_url), driver.browser.current_url
Exemple #39
0
def scrape():
    fileWatcherProcess = Process(target=__event_watcher.startObserver, args=())
    fileWatcherProcess.start()

    df_map = pd.read_excel(f'{constants.excelSaveLocation}/portfolio.xlsx',
                           sheet_name=None)
    stocks = df_map.get("Stocks", None)
    # Scrape Nasdaq Nordic
    fp = webdriver.FirefoxProfile()
    # Set browser preferences

    fp.set_preference("browser.preferences.instantApply", True)
    fp.set_preference(
        "browser.helperApps.neverAsk.saveToDisk",
        "text/plain, application/octet-stream, application/binary, text/csv, application/csv, application/excel, text/comma-separated-values, text/xml, application/xml, application/pdf, text/html, application/xhtml+xml, application/xml;q=0.9,*/*;q=0.8"
    )
    fp.set_preference("browser.helperApps.alwaysAsk.force", False)
    fp.set_preference("browser.download.manager.showWhenStarting", False)
    fp.set_preference("browser.download.dir", constants.pdfDownloadDir)
    fp.set_preference("pdfjs.disabled", True)
    # Use this to disable Acrobat plugin for previewing PDF:s in Firefox (if you have Adobe reader installed on your computer)
    fp.set_preference("plugin.scan.Acrobat", "99.0")
    fp.set_preference("plugin.scan.plid.all", False)
    # 0 desktop, 1 Default Download, 2 User defined
    fp.set_preference("browser.download.folderList", 2)

    opt = webdriver.FirefoxOptions()
    opt.add_argument('-headless')
    browser = webdriver.Firefox(options=opt,
                                firefox_profile=fp,
                                service_log_path=constants.GECKO_LOG_PATH)

    # poll for elements for --  seconds max, before shutdown
    browser.implicitly_wait(0)
    wait = WebDriverWait(browser, 35)

    latest_button_xpath = ""

    def switchToMorningstarFrame():
        morningstarFrameXPATH = '//*[@id="MorningstarIFrame"]'
        retries = 0
        while retries < 5:
            try:
                print('Waiting for iFrame and iFrame Tables:')
                print('Attempt Number:', retries + 1)
                # wait for iFrame to be available
                wait.until(
                    EC.frame_to_be_available_and_switch_to_it(
                        (By.XPATH, morningstarFrameXPATH)))
                # wait for all tables to load
                wait.until(
                    EC.visibility_of_all_elements_located(
                        (By.XPATH, "//table")))
                waitforload(browser, 10)
                return
            except (UnexpectedAlertPresentException, TimeoutException) as e:
                browser.refresh()
                retries += 1
                print(latest_button_xpath)
                clickElement(browser, latest_button_xpath, 5)
        raise (e)

    url = "http://www.nasdaqomxnordic.com/shares"

    try:
        browser.get(url)

        midCapXPATH = "/html/body/section/div/div/div/section/div/article/div/section/form/div[4]/ul/li[2]"
        smallCapXPATH = "/html/body/section/div/div/div/section/div/article/div/section/form/div[4]/ul/li[3]"

        clickElement(browser, midCapXPATH, 5)

        clickElement(browser, smallCapXPATH, 5)

        ## Wait until table loading dissapears
        loadingImgXPATH = "/html/body/section/div/div/div/section/div/article/div/div[2]/img"
        wait.until(
            EC.invisibility_of_element_located((By.XPATH, loadingImgXPATH)))

        ## add links to dicts
        foundAssetsDict = {}
        notFound = []
        print("Searching For Assets In Main Market...")
        for assetName in stocks['Asset']:
            try:
                asset = browser.find_element(
                    By.XPATH,
                    f'/html/body/section/div/div/div/section/div/article/div/div[2]/table[1]/tbody/tr/td/a[.="{assetName}"]'
                )
                #add to dict
                foundAssetsDict[str(asset.get_attribute(
                    "innerHTML")).strip()] = asset.get_attribute("href")
            except NoSuchElementException:
                print(f'Could not find  {assetName} in Main Market')
                notFound.append(assetName)

        if len(notFound) > 0:
            print("Searching For Assets In First North...")
            firstNorthXPATH = '/html/body/section/div/div/div/section/div/article/div/section/form/div[1]/div/label[2]'

            clickElement(browser, firstNorthXPATH, 5)
            firstNorthGMXPATH = latest_button_xpath = "/html/body/section/div/div/div/section/div/article/div/section/form/div[5]/ul/li[2]"

            clickElement(browser, firstNorthGMXPATH, 5)

            ## Wait until table loading dissapears
            wait.until(
                EC.invisibility_of_element_located(
                    (By.XPATH, loadingImgXPATH)))

            for assetName in notFound:
                try:
                    asset = browser.find_element(
                        By.XPATH,
                        f'/html/body/section/div/div/div/section/div/article/div/div[2]/table[1]/tbody/tr/td/a[.="{assetName}"]'
                    )
                    #add to dict
                    foundAssetsDict[str(asset.get_attribute(
                        "innerHTML")).strip()] = asset.get_attribute("href")
                except NoSuchElementException:
                    print("couldn't find: ", assetName, "in First North")

        # EXTRACT RATIOS
        for asset, href in foundAssetsDict.items():

            # go to asset page
            browser.get(href)

            keyRatiosXPATH = latest_button_xpath = "/html/body/section/div/div/div/section/section/section/nav/ul/li[4]/a"

            clickElement(browser, keyRatiosXPATH, 5)

            # Switch to iFrame containing morningstar data
            switchToMorningstarFrame()

            # Get Page Source
            keyRatiosPage = browser.page_source
            soup = BeautifulSoup(keyRatiosPage, 'lxml')
            Utils.saveTxtFile(str(soup.prettify()),
                              f'{asset}_keyRatios')  # Save file

            # switch back to original frame
            browser.switch_to.default_content()

            overviewXPATH = latest_button_xpath = "/html/body/section/div/div/div/section/section/section/nav/ul/li[2]/a"

            clickElement(browser, overviewXPATH, 5)

            switchToMorningstarFrame()

            # Make sure company profile has loaded
            companyProfileXPATH = "/html/body/div[2]/div[2]/form/div[4]/div[2]/div/div/div[3]/div[3]/div[1]/h2"
            wait.until(
                EC.text_to_be_present_in_element(
                    (By.XPATH, companyProfileXPATH), "Company Profile"))
            wait.until(
                EC.presence_of_element_located(
                    (By.XPATH, '//*[@id="CompanyProfile"]')))

            overviewPage = browser.page_source
            soup = BeautifulSoup(overviewPage, 'lxml')
            Utils.saveTxtFile(str(soup.prettify()), f'{asset}_overview')

            # switch back to original frame
            browser.switch_to.default_content()

            companyFinancialsXPATH = latest_button_xpath = '/html/body/section/div/div/div/section/section/section/nav/ul/li[5]/a'

            clickElement(browser, companyFinancialsXPATH, 5)

            switchToMorningstarFrame()

            # Make sure table content loads
            incomeStatementCaptionXPATH = "/html/body/div[2]/div[2]/form/div[4]/div[2]/div/div/div[3]/div[2]/table/caption"
            wait.until(
                EC.text_to_be_present_in_element(
                    (By.XPATH, incomeStatementCaptionXPATH),
                    "Income Statement"))

            financialsPage = browser.page_source
            soup = BeautifulSoup(financialsPage, 'lxml')
            Utils.saveTxtFile(str(soup.prettify()), f'{asset}_financials')

            # switch back to original frame
            browser.switch_to.default_content()

            # Download Fact Sheet
            factsheetLinkXPATH = "/html/body/section/div/div/div/section/section/section/nav/ul/li[6]/a"

            #click instantly downloads because of browser preferences
            clickElement(browser, factsheetLinkXPATH, 5)

        browser.quit()
        fileWatcherProcess.terminate()
        saveStockInfoToExcel()

    except Exception as e:
        Utils.log_error(e)
        browser.quit()
        sys.exit(e)
Exemple #40
0
 def wait_until_status_message_hidden(self):
     self.wait().until(
         ec.invisibility_of_element_located(
             (by.By.ID, 'gcb-butterbar-message')))
     return self
 def wait_until_busy_indicator_is_completed(self):
     self.wait.until(EC.invisibility_of_element_located((By.XPATH, '//div[contains(@class,"pega_ui_busyIndicator") and @style="visibility: visible;"]')))
Exemple #42
0
 def verify_product_removed(self):
     self.click(*self.REMOVE_BTN)
     self.driver.wait.until(
         EC.invisibility_of_element_located(self.PROD_IN_CART))
Exemple #43
0
 def select_purpose(self, purpose):
     self.click(*self.PURPOSE_DROPDOWN)
     self.click(*(By.XPATH, "//li[@data-testid='{0}']".format(purpose)))
     self.wait.until(EC.invisibility_of_element_located(self.MENU_PURPOSE))
Exemple #44
0
    def join_game(self,
                  room_id: Optional[int],
                  avatar_id: Optional[int] = 0) -> None:
        print(f'Entrando {"na sala" if room_id is not None else ""}...')
        self.driver.get(
            f'{Constants.url}{room_id if room_id is not None else ""}')
        wait = WebDriverWait(self.driver, 10)

        # entre anônimo
        wait.until(
            ec.presence_of_element_located((By.XPATH, Constants.enter_button)))
        self.driver.find_element_by_xpath(Constants.enter_button).click()
        wait.until(
            ec.invisibility_of_element_located(
                (By.XPATH, Constants.loading_animation)))

        # username
        user_input = Constants.username_input if room_id is None else Constants.username_input2
        if self.username is not None and 2 <= len(self.username) <= 15:
            wait.until(ec.presence_of_element_located((By.XPATH, user_input)))
            self.driver.find_element_by_xpath(user_input).clear()
            self.driver.find_element_by_xpath(user_input).send_keys(
                self.username)
        else:
            self.username = self.driver.find_element_by_xpath(
                user_input).get_attribute('value')

        # Avatar
        if 1 <= avatar_id <= 36:
            time.sleep(2)
            # Botão edit => abre menu avatar
            wait.until(
                ec.element_to_be_clickable(
                    (By.XPATH, Constants.avatar_edit_button)))
            self.driver.find_element_by_xpath(
                Constants.avatar_edit_button).click()

            # Icone do Avatar
            if avatar_id > 14:
                self.driver.execute_script(
                    'arguments[0].scrollIntoView(true);',
                    self.driver.find_element_by_xpath(
                        Constants.avatar(avatar_id)))
            wait.until(
                ec.element_to_be_clickable(
                    (By.XPATH, Constants.avatar(avatar_id))))
            self.driver.find_element_by_xpath(
                Constants.avatar(avatar_id)).click()

            # Botão confirmar escolha
            wait.until(
                ec.element_to_be_clickable(
                    (By.XPATH, Constants.avatar_confirm_button)))
            self.driver.find_element_by_xpath(
                Constants.avatar_confirm_button).click()

            # Esperar a animação
            wait.until(
                ec.invisibility_of_element_located(
                    (By.XPATH, Constants.fade_animation)))
        time.sleep(2)

        # Botão Jogar => entra no jogo
        play_button = Constants.play_button if room_id is None else Constants.play_button2
        wait.until(ec.element_to_be_clickable((By.XPATH, play_button)))
        time.sleep(2)
        self.driver.find_element_by_xpath(play_button).click()

        print(f'Logado como: {self.username}')
Exemple #45
0
    def assassult(self):

        current_toxic = self.browser.find_element_by_xpath(
            '//div[@class="user_profile_progressbar progressbar"]//div[@id="addiction-progressbar"]'
        ).value_of_css_property("width")
        percent_toxic = round(100 * float(current_toxic[:-2]) / 128)
        try:
            if percent_toxic > 9:
                self.toxic()
            else:
                try:
                    but = WebDriverWait(self.browser, 5).until(
                        EC.visibility_of_element_located(
                            (By.XPATH, '//div[@id="menu-sprite-robbery"]')))
                    if but:
                        but.click()

                        select = WebDriverWait(self.browser, 20).until(
                            EC.presence_of_all_elements_located((
                                By.XPATH,
                                "//div[@id='content_middle']//div//div[4]//table//tr//td//select[@id='singlerobbery-select-robbery']//option"
                            )))

                        if select:  #/// all options available under dropdown
                            last = None
                            for option in select:  #// gets last iterator
                                if "100" in option.text and "25" in option.text:
                                    last = option.text
                            stamina_cost = last.index("-")
                            final_stamina_cost = last[
                                int(stamina_cost +
                                    2):int(stamina_cost +
                                           4)]  #/// gets the required cost

                            drop_menu = WebDriverWait(self.browser, 20).until(
                                EC.presence_of_element_located((
                                    By.XPATH,
                                    "//div[@id='content_middle']//div//div[4]//table//tr//td//select[@id='singlerobbery-select-robbery']"
                                )))
                            DropDown = Select(
                                drop_menu)  #/// navigates to drop down menu
                            if DropDown:
                                self.current_stamina = self.browser.find_element_by_xpath(
                                    '//div[@class="user_profile_progressbar progressbar"]//div[@id="stamina-progressbar"]'
                                ).value_of_css_property("width")
                                self.percent_stamina = round(
                                    100 * float(self.current_stamina[:-2]) /
                                    128)
                                DropDown.select_by_visible_text(
                                    last
                                )  #//// picks the last element with 100% of chance to rob
                                if self.percent_stamina > int(
                                        final_stamina_cost) - 1:
                                    try:
                                        stamina_cost = last.index(
                                            "-"
                                        )  #// gets the index to estimate number position
                                        final_stamina_cost = last[int(
                                            stamina_cost + 2
                                        ):int(stamina_cost +
                                              4)]  #/// gets the required cost
                                        for x in range(
                                                round(self.percent_stamina /
                                                      int(final_stamina_cost))
                                        ):  #// estimates possible tries
                                            WebDriverWait(
                                                self.browser, 20
                                            ).until(
                                                EC.element_to_be_clickable((
                                                    By.XPATH,
                                                    "//tr//table//tr//button[@id='singlerobbery-rob']"
                                                ))).click()
                                        self.assassult()
                                    except StaleElementReferenceException or ElementClickInterceptedException:
                                        WebDriverWait(self.browser, 20).until(
                                            EC.invisibility_of_element_located(
                                                (By.CLASS_NAME, "overlay")))
                                        self.assassult()
                                else:
                                    self.restore_stamina()
                                    self.restore()
                                    self.assassult()

                except ElementClickInterceptedException or StaleElementReferenceException:
                    WebDriverWait(self.browser, 20).until(
                        EC.invisibility_of_element_located(
                            (By.CLASS_NAME, "overlay")))
                    self.assassult()
        except:
            raise
Exemple #46
0
def corporate_dir(account):
    link_, listy_, info = [], [], []
    #driver = webdriver.Chrome(executable_path = '/Users/macbook/Desktop/BBB/chromedriver')
    chrome_options = Options()
    chrome_options.add_argument("--headless")
    chrome_options.binary_location = '/Applications/Google Chrome Canary.app/Contents/MacOS/Google Chrome Canary'
    driver = webdriver.Chrome(
        executable_path='/Users/macbook/Desktop/BBB/chromedriver',
        chrome_options=chrome_options)
    try:
        driver.get("https://corporatedir.com/")
        WebDriverWait(driver, 5).until(
            EC.element_to_be_clickable(
                (By.XPATH, "//a[contains(text(), 'Welcome Guest')]")))
        element = driver.find_element_by_xpath(
            "//a[contains(text(), 'Welcome Guest')]")
        element.click()
        WebDriverWait(driver, 5).until(
            EC.element_to_be_clickable(
                (By.XPATH, "//*[contains(text(), 'LOGIN')]")))
        element = driver.find_element_by_xpath(
            "//*[contains(text(), 'LOGIN')]")
        element.click()
        WebDriverWait(driver, 20).until(
            EC.visibility_of_element_located((By.ID, "email")))
        driver.find_element_by_id("email").send_keys(
            "*****@*****.**")
        driver.find_element_by_id("passsword").send_keys("Prihanna22")
        driver.find_element_by_xpath("//button[@name='login']").click()
    except TimeoutException:
        print("here")
        return info
    except WebDriverException:
        driver.quit()
        return info
    #driver.implicitly_wait(100)
    try:
        WebDriverWait(driver, 20).until(
            EC.invisibility_of_element_located((By.ID, "email")))
        driver.find_element_by_id("search").send_keys(account)
        WebDriverWait(driver, 5).until(
            EC.element_to_be_clickable((By.XPATH, "//button[@name='result']")))
        driver.find_element_by_xpath("//button[@name='result']").click()
    except (TimeoutException, WebDriverException) as e:
        return info
    if is_element_present(driver, By.ID, "myTable"):
        html = driver.page_source
        soup = BeautifulSoup(html, "lxml")
        table = soup.find("table", id='myTable')
        trs = table.find_all("tr")
        for tr in trs[1:]:
            dict_ = {}
            link = tr.find("a")
            link = re.findall(r'"(.*?)"', str(link))[0].strip()
            #print(link)
            if link.find(account.split(" ")[0].lower() + "-") > -1:
                link_.append(link)
        #print(listy_)
        for link in link_[0:5]:
            #print(set(link_))
            details_dict, name, _dict = [], [], {}
            try:
                driver.get(link)
            except Exception:
                print("connection reset error")
                continue
            html = driver.page_source
            soup = BeautifulSoup(html, "lxml")
            table = soup.find(
                "table",
                class_="table table-hover table-bordered table-striped")
            keys = table.find_all("th")
            values = table.find_all("td")
            for i in range(0, len(keys) - 1):
                _dict[keys[i].get_text().replace(".",
                                                 "")] = values[i].get_text()
            #details_dict.append(_dict)
            details = soup.find("div", class_='panel-body')
            ps = details.find_all("p")
            for p in ps:
                a = p.find_all("a")
                for a_ in a:
                    name.append(a_.get_text())
                _dict["name"] = name
            try:
                driver.find_element_by_id("contact").click()
                WebDriverWait(driver, 10).until(
                    EC.visibility_of_element_located((By.ID, 'setemail')))
                email = driver.find_element_by_xpath(
                    "//div[@id='setemail']").get_attribute('innerText')
                _dict["email"] = email.replace("Email - ", "")
            except Exception:
                continue
            #print("email",email)
            info.append(_dict)
    else:
        print("no records present")
    driver.quit()
    return info
Exemple #47
0
def find_contact(self, name):
    # 删除人员,返回通讯录页面后,等待页面刷新删除后的通讯录名单
    locator = (MobileBy.XPATH, f'//*[@text="{name}"]')
    result = WebDriverWait(self.driver, 10).until(
        expected_conditions.invisibility_of_element_located(locator))
    return result
Exemple #48
0
from bs4 import BeautifulSoup as Soup
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
import time

driver = webdriver.Chrome('/Users/vigneshnatarajan/Downloads/chromedriver')

driver.get('https://www.ilcollege2career.com/#/')

first_click = WebDriverWait(driver, 10).until(
    EC.element_to_be_clickable(
        (By.XPATH, '//*[@id="tutorial-modal"]/div/div/div/div[3]/button[2]')))
first_click.click()

invisible = WebDriverWait(driver, 10).until(
    EC.invisibility_of_element_located((By.ID, 'tutorial-modal')))

if invisible:
    Year4_click = WebDriverWait(driver, 10).until(
        EC.element_to_be_clickable((By.ID, '4year')))
    Year4_click.click()

    count = 1
    university, major, average_salary, salary_growth = [], [], [], []
    while count < 29:
        select = Select(driver.find_element_by_xpath('//*[@id="program-1"]'))
        if count > 1:
            WebDriverWait(driver, 10).until(
                EC.visibility_of_element_located(
                    (By.XPATH, '//*[@id="program-1"]/option[3]')))
            select.select_by_visible_text('Agriculture & Related')
Exemple #49
0
def wait_spinner(driver):
    sleep(0.11)  # Enough time for the spinner to show up.
    WebDriverWait(driver, 10).until(
        EC.invisibility_of_element_located((By.ID, 'spinner')))
Exemple #50
0
        By.CSS_SELECTOR,
        "#MenuBar1 > li:nth-child(5) > ul > li:nth-child(3) > ul > li:nth-child(1) > a"
    )))
## 請假資料維護
li3 = browser.find_element_by_css_selector(
    "#MenuBar1 > li:nth-child(5) > ul > li:nth-child(3) > ul > li:nth-child(1) > a"
)
ActionChains(browser).move_to_element_with_offset(
    li3, 10, -10).move_to_element_with_offset(li3, 10, 10).perform()
li3.click()
## 移出左方列表使浮出列表消失
li4 = browser.find_element_by_css_selector("#MenuBar1 > li:nth-child(1) > a")
ActionChains(browser).move_to_element_with_offset(li4, 10, -10).perform()
element = wait.until(
    EC.invisibility_of_element_located(
        (By.CSS_SELECTOR,
         "#MenuBar1 > li:nth-child(5) > ul > li:nth-child(3) > a")))

switch_to_iframe(browser)
browser.find_element_by_link_text("[請假資料查詢、編輯]").click()

# In[7]:

# Select 救災救護指揮中心
select = Select(browser.find_element_by_id("unit"))
select.select_by_visible_text("救災救護指揮中心")
# Select all members
selAllPerson = browser.find_element_by_id('selAll').click()

# In[8]:
def banblockStory(browser, decision, tier, banblock_reason, banblock_detail, banblock_observed_loc, review_author, comment, unreviewed_flag):
	# Identifiers
	review_button_identifier = id_sr.reviewbutton_xpath()
	updatereview_button_identifier = id_sr.updatereviewbutton_xpath()
	radio_identifier = id_sr.reviewradio_xpath(decision)
	tier_dropdown_identifier = id_sr.blockedtierdropdown_xpath()
	violation_checkbox_identifier = id_sr.violationcheckbox_xpath(banblock_reason)
	violationdetail_checkbox_identifier = id_sr.violationdetailcheckbox_xpath(banblock_reason, banblock_detail)
	violationloc_input_identifier = id_sr.violationlocinput_xpath(banblock_reason)
	reviewauthor_input_identifier = id_sr.reviewauthorinput_xpath()
	reviewcomment_input_identifier = id_sr.reviewcommentinput_xpath()
	reviewsubmit_button_identifier = id_sr.reviewsubmitbutton_xpath()
	search_button_identifier = id_sr.searchbutton_xpath()
	review_form_identifier = id_sr.reviewform_xpath()

	# If this is in the Unreviewed tab, find the "Review" button
	if unreviewed_flag == True:
		# Press Review Button
		WebDriverWait(browser, 30).until(EC.element_to_be_clickable((By.XPATH, review_button_identifier)))
		review_button = browser.find_element_by_xpath(review_button_identifier)
		review_button.click()

	# If this is in other tabs, find the "Update Review" button
	elif unreviewed_flag == False:
		WebDriverWait(browser, 30).until(EC.element_to_be_clickable((By.XPATH, updatereview_button_identifier)))
		updatereview_button = browser.find_element_by_xpath(updatereview_button_identifier)
		updatereview_button.click()

	# Press "decision" radio
	WebDriverWait(browser, 30).until(EC.element_to_be_clickable((By.XPATH, radio_identifier)))
	approve_radio = browser.find_element_by_xpath(radio_identifier)
	approve_radio.click()	

	# If decision is "blocked", choose a tier
	if decision == "blocked":
		WebDriverWait(browser, 30).until(EC.element_to_be_clickable((By.XPATH, tier_dropdown_identifier)))
		sel = Select(browser.find_element_by_xpath(tier_dropdown_identifier))
		sel.select_by_visible_text(tier)

	# Choose a Violation 
	WebDriverWait(browser, 30).until(EC.element_to_be_clickable((By.XPATH, violation_checkbox_identifier)))
	violation_checkbox = browser.find_element_by_xpath(violation_checkbox_identifier)
	violation_checkbox.click()

	# Choose a Violation Reason
	WebDriverWait(browser, 30).until(EC.element_to_be_clickable((By.XPATH, violationdetail_checkbox_identifier)))
	violationdetail_checkbox = browser.find_element_by_xpath(violationdetail_checkbox_identifier)
	violationdetail_checkbox.click()

	# Type the Violation Location
	WebDriverWait(browser, 30).until(EC.presence_of_element_located((By.XPATH, violationloc_input_identifier)))
	violationloc_input = browser.find_element_by_xpath(violationloc_input_identifier)
	violationloc_input.send_keys(banblock_observed_loc)

	# Input Review Author
	WebDriverWait(browser, 30).until(EC.presence_of_element_located((By.XPATH, reviewauthor_input_identifier)))
	reviewauthor_input = browser.find_element_by_xpath(reviewauthor_input_identifier)
	reviewauthor_input.send_keys(review_author)

	# Input Comment
	WebDriverWait(browser, 30).until(EC.presence_of_element_located((By.XPATH, reviewcomment_input_identifier)))
	reviewcomment_input = browser.find_element_by_xpath(reviewcomment_input_identifier)
	reviewcomment_input.send_keys(comment)

	# Submit Review
	WebDriverWait(browser, 30).until(EC.presence_of_element_located((By.XPATH, reviewsubmit_button_identifier)))
	reviewsubmit_button = browser.find_element_by_xpath(reviewsubmit_button_identifier)
	reviewsubmit_button.click()

	# Wait Until Review is Finished
	WebDriverWait(browser, 10).until(EC.invisibility_of_element_located((By.XPATH, review_form_identifier)))
Exemple #52
0
 def wait_until_hidden(self, element_tuple):
     self.wait.until(EC.invisibility_of_element_located(element_tuple))
Exemple #53
0
driver.find_element_by_id("btnLogin").click()

# Click on the Send Verification Code button
driver.find_element_by_id("btnSendCode").click()

# MARKET

# Wait for home page transfer button to be located
WebDriverWait(driver, 90).until(
    EC.visibility_of_element_located(
        (By.XPATH, '/html/body/main/section/nav/button[3]')))
time.sleep(5)

# Wait for loader to be invisible
WebDriverWait(driver, 40).until(
    EC.invisibility_of_element_located((By.ID, 'futweb-loader')))
time.sleep(5)

# Click on transfer button
driver.find_element_by_xpath("/html/body/main/section/nav/button[3]").click()
time.sleep(5)

# Click on transfer market button
driver.find_element_by_xpath(
    "/html/body/main/section/section/div[2]/div/div/div[2]").click()
time.sleep(1)

# SEARCH FILTER

time.sleep(1)
# Click on country dropdown button
Exemple #54
0
 def wait_for_invisibility(self, selector):
     """Pause until the element identified by selector is invisible"""
     return _wait_for_condition(
         ec.invisibility_of_element_located((By.CSS_SELECTOR, selector)),
         self
     )
Exemple #55
0
 def waitfor_invisibility(self, element, by=By.CSS_SELECTOR):
     return self.wait10.until(EC.invisibility_of_element_located((by, element)))
Exemple #56
0
 def wait_for_invisible(self, locator):
     self.wait.until(EC.invisibility_of_element_located(locator))
    def parse(self, response):
        self.driver.get(response.url)

        # Navigate to evaluation results
        WebDriverWait(self.driver, 5).until(
            EC.presence_of_element_located(
                (By.XPATH, '//*[@id="tdr_2_col_content"]/ul/li[2]/a')))
        self.driver.find_element_by_xpath(
            '//*[@id="tdr_2_col_content"]/ul/li[2]/a').click()

        # Get a list of subjects/options to loop through
        options = self.driver.find_element_by_xpath(
            '//*[@id="ctl00_ContentPlaceHolder1_ddlDepartments"]'
        ).find_elements_by_tag_name('option')
        options.pop(0)  # First option is empty/blank

        cape_dict = {}

        # Navigate each subject's capes
        for option in options:
            option.click()

            # Sometimes it gave me an error that the submit button wasn't attached to the DOM...So loop till it is
            element_is_stale = True
            while element_is_stale:
                try:
                    WebDriverWait(self.driver, 60).until(
                        EC.presence_of_element_located((
                            By.XPATH,
                            '//*[@id="ctl00_ContentPlaceHolder1_btnSubmit"]')))
                    WebDriverWait(self.driver, 60).until(
                        EC.element_to_be_clickable((
                            By.XPATH,
                            '//*[@id="ctl00_ContentPlaceHolder1_btnSubmit"]')))

                    self.driver.find_element_by_xpath(
                        '//*[@id="ctl00_ContentPlaceHolder1_btnSubmit"]'
                    ).click()
                    element_is_stale = False
                except StaleElementReferenceException:
                    continue

            # Wait based on the red spinning thing appearing and then disappearing (it's loading results)
            WebDriverWait(self.driver, 30).until(
                EC.visibility_of_element_located((
                    By.XPATH,
                    '//*[@id="ctl00_ContentPlaceHolder1_UpdateProgress1"]/div/div/img'
                )))
            WebDriverWait(self.driver, 60).until(
                EC.invisibility_of_element_located((
                    By.XPATH,
                    '//*[@id="ctl00_ContentPlaceHolder1_UpdateProgress1"]/div/div/img'
                )))

            # Pass the web page navigated to by Selenium to Scrapy
            sel = scrapy.Selector(text=self.driver.page_source.encode('utf-8'))
            course_selectors = sel.xpath(
                '//*[@id="ctl00_ContentPlaceHolder1_gvCAPEs"]/tbody/tr')

            for course_selector in course_selectors:
                professor_name = course_selector.xpath(
                    './/td[1]/text()').extract_first(default=None)
                full_course_name = course_selector.xpath(
                    './/td[2]/a/text()').extract_first(default=None)
                course_subject = full_course_name[:full_course_name.index(' ')]
                course_number = full_course_name[(
                    full_course_name.index(' ') +
                    1):(full_course_name.find('-') - 1)]
                course_name = full_course_name[(full_course_name.find('-') +
                                                2):]
                term = course_selector.xpath('.//td[3]/text()').extract_first(
                    default=None)
                recommend_class = course_selector.xpath(
                    './/td[6]/span/text()').extract_first(default=float())
                recommend_professor = course_selector.xpath(
                    './/td[7]/span/text()').extract_first(default=float())
                study_hours = course_selector.xpath(
                    './/td[8]/span/text()').extract_first(default=float())
                avg_grade_exp = course_selector.xpath(
                    './/td[9]/span/text()').extract_first(default=float())
                avg_grade_rec = course_selector.xpath(
                    './/td[10]/span/text()').extract_first(default=float())

                # Converting strings to numbers
                if study_hours:
                    try:
                        study_hours = float(study_hours)
                    except ValueError:
                        study_hours = float()

                if recommend_class:
                    try:
                        recommend_class = float(recommend_class[:-2])
                    except (IndexError, ValueError) as e:
                        recommend_class = float()

                if recommend_professor:
                    try:
                        recommend_professor = float(recommend_professor[:-2])
                    except (IndexError, ValueError) as e:
                        recommend_professor = float()

                if avg_grade_exp:
                    try:
                        avg_grade_exp = \
                            float(avg_grade_exp[(avg_grade_exp.index('(') + 1):(avg_grade_exp.index(')') - 1)])
                    except (IndexError, ValueError) as e:
                        avg_grade_exp = float()

                if avg_grade_rec:
                    try:
                        avg_grade_rec = \
                            float(avg_grade_rec[(avg_grade_rec.index('(') + 1):(avg_grade_rec.index(')') - 1)])
                    except (IndexError, ValueError) as e:
                        avg_grade_rec = float()

                # Some professor names have extra spaces. If they do delete them.
                if '  ' in professor_name:
                    professor_name = professor_name[:professor_name.index('  '
                                                                          )]

                new_cape_info = CapeInfo(course_name, course_number,
                                         course_subject, professor_name,
                                         recommend_class, recommend_professor,
                                         study_hours, avg_grade_exp,
                                         avg_grade_rec, term)

                # If this new cape info has the came course and professor then combine them, else add to hash table
                # String versions of the hash returned are used since it doesn't seem to work otherwise...Too big num?
                if cape_dict.get(str(hash(new_cape_info))):
                    cape_dict[str(hash(new_cape_info))] = cape_dict[str(
                        hash(new_cape_info))] + new_cape_info
                else:
                    cape_dict[str(hash(new_cape_info))] = new_cape_info

        # Map cape objects to a dictionary format, so that it can be written as json to a file
        json_data = map(lambda capeObj: capeObj.get_dict(),
                        list(cape_dict.values()))
        self.data.write(unicode(json.dumps(json_data, indent=4)))
Exemple #58
0
 def wait2_until(self):
     wait = WebDriverWait(self.driver, 100)
     wait.until(EC.invisibility_of_element_located((By.CLASS_NAME, Locators.wait2_class_name)))
 def wait_until_throbbing_is_completed(self):
     self.wait.until(EC.invisibility_of_element_located((By.XPATH, '//ul[@class="throbber"]')))
Exemple #60
0
 def wait_until_element_is_invisible_by_locator(self, locator_tuple):
     wait = WebDriverWait(self.driver, 10)
     wait.until(EC.invisibility_of_element_located(locator_tuple))