def test_MDT_open_new(self): WebDriverWait(self.driver, 5).until(EC.element_to_be_clickable((By.XPATH, self.helper.get_xpath("create_workspace_btn")))) workspace_name = "Open New MDT" 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 + "'") #Enter product in search field element = WebDriverWait(self.driver, 5).until(EC.element_to_be_clickable((By.XPATH, self.helper.get_xpath("instrument_search")))) product = self.helper.get_product() element.send_keys(product) #Make sure the product entered in the search field matches each of the results returned what = self.helper.get_xpath("instrument_search_results") WebDriverWait(self.driver, 5).until(EC.presence_of_element_located((By.XPATH, what))) elements = self.driver.find_elements_by_xpath(what) for element in elements: self.assertIn(product, element.text, "Search string '" + product + "' not found in result '" + element.text + "'") #Click on the first search result and verify that MDT for that contract appears search_result_title = elements[0].text elements[0].click() what = self.helper.get_xpath("mdt_title") element = WebDriverWait(self.driver, 5).until(EC.presence_of_element_located((By.XPATH, what))) self.assertIn(search_result_title, element.text, "Search result instrument (" + search_result_title + ") was not found in title of MDT (" + element.text + ")")
def create_ds(self, name, description, tags, private, searchable, allowed_users, acquire_url, resource_url, resource_name, resource_description, resource_format): driver = self.driver driver.get(self.base_url) WebDriverWait(self.driver, 10).until(EC.element_to_be_clickable((By.LINK_TEXT, 'Datasets'))).click() WebDriverWait(self.driver, 10).until(EC.element_to_be_clickable((By.LINK_TEXT, 'Add Dataset'))).click() self.fill_ds_general_info(name, description, tags, private, searchable, allowed_users, acquire_url) # SECOND PAGE: Add Resources WebDriverWait(self.driver, 10).until(EC.presence_of_element_located((By.ID, "field-name"))) # Wait a bit to let ckan add javascript hooks time.sleep(0.2) try: # The link button is only clicked if it's present driver.find_element_by_link_text('Link').click() except Exception: # pragma: no cover pass driver.find_element_by_id('field-image-url').clear() driver.find_element_by_id('field-image-url').send_keys(resource_url) driver.find_element_by_id('field-name').clear() driver.find_element_by_id('field-name').send_keys(resource_name) driver.find_element_by_id('field-description').clear() driver.find_element_by_id('field-description').send_keys(resource_description) driver.find_element_by_id('s2id_autogen1').send_keys(resource_format + Keys.RETURN) driver.find_element_by_css_selector('button.btn.btn-primary').click()
def click_toc_recent(self, tref): WebDriverWait(self.driver, TEMPER).until( element_to_be_clickable((By.CSS_SELECTOR, '.recentItem[data-ref="{}"]'.format(tref))) ) recent = self.driver.find_element_by_css_selector('.recentItem[data-ref="{}"]'.format(tref)) recent.click() WebDriverWait(self.driver, TEMPER).until(element_to_be_clickable((By.CSS_SELECTOR, '.segment')))
def test_MDT_GTC(self): WebDriverWait(self.driver, 5).until(EC.element_to_be_clickable((By.XPATH, self.helper.get_xpath("create_workspace_btn")))) workspace_name = "MDT GTC" 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', 'order_book'] self.assertTrue(self.helper.populate_workspace(workspace_windows), "Call to populate_workspace failed") element = WebDriverWait(self.driver, 5).until(EC.element_to_be_clickable((By.XPATH, self.helper.get_xpath("mdt_GTC_order")))) element.click() self.helper.send_order() #Get the name of the contract based on the title of the MDT window element = self.driver.find_element_by_xpath(self.helper.get_xpath("mdt_title")) contract_name = (element.text).split(":")[0] #Verify values in order book return_msg = self.helper.validate_order(tif="GTC", contract=contract_name) self.assertEqual(return_msg, "OK", "Call to validate_order failed: '" + return_msg + "'")
def _do_logout(self, args): wait = ui.WebDriverWait(self.browser, self.timeout) wait.until(expected_conditions.element_to_be_clickable((By.ID, "nav_logout"))) elem = self.browser.find_element_by_id("nav_logout") elem.send_keys(Keys.RETURN) wait = ui.WebDriverWait(self.browser, self.timeout) wait.until(expected_conditions.element_to_be_clickable((By.ID, "nav_login")))
def find_soup(domain_name, driver, form_name): # element_to_be_clickable, presence_of_element_located WebDriverWait(driver, MAX_WAIT).until(EC.element_to_be_clickable((By.ID, form_name))) domain_form = driver.find_element_by_id(form_name) WebDriverWait(driver, MAX_WAIT).until(EC.element_to_be_clickable((By.ID, form_name))) domain_form.clear() type_new = ActionChains(driver).click(domain_form).send_keys(domain_name) type_new.perform() driver.implicitly_wait(0.1) wait_attempts = 0 while domain_form.get_attribute('value') != domain_name: driver.implicitly_wait(5) wait_attempts += 1 if wait_attempts > WAIT_ATTEMPTS: break submit_new = ActionChains(driver).click(domain_form).send_keys(Keys.ENTER) submit_new.perform() WebDriverWait(driver, MAX_WAIT).until(EC.element_to_be_clickable((By.ID, "domain_search_input"))) source = driver.page_source soup = BeautifulSoup(source, "html.parser") godaddy_link = 'https://www.godaddy.com/domains/searchresults.aspx?checkAvail=1&domainToCheck=' + domain_name # Can't do the following b/c the browser url doesn't change when editing form within page: godaddy_link = driver.current_url return soup, godaddy_link, driver
def submitAndBuy(): # 去购物车结算 wait.until(EC.visibility_of_element_located((By.XPATH,'//*[@id="J_ResultSummary"]/div[4]/a[2]'))); driver.find_element_by_xpath('//*[@id="J_ResultSummary"]/div[4]/a[2]').click(); # 选择所有物品 wait.until(EC.element_to_be_clickable((By.XPATH,'//*[@id="J_SelectAll1"]'))); driver.find_element_by_xpath('//*[@id="J_SelectAll1"]').click(); # 去结算 wait.until(EC.element_to_be_clickable((By.XPATH,'//*[@id="J_Go"]'))); driver.find_element_by_xpath('//*[@id="J_Go"]').click(); #提交订单 wait.until(EC.element_to_be_clickable((By.XPATH,'//*[@id="J_Go"]'))); driver.find_element_by_xpath('//*[@id="J_Go"]').click(); # 点击其他付款方式 wait.until(EC.element_to_be_clickable((By.XPATH,'//*[@id="J-rcChannels"]/div/div/a[1]'))); driver.find_element_by_xpath('//*[@id="J-rcChannels"]/div/div/a[1]').click(); # 添加银行卡 wait.until(EC.element_to_be_clickable((By.XPATH,'//*[@id="J-rcChannels"]/div/div/a'))); driver.find_element_by_xpath('//*[@id="J-rcChannels"]/div/div/a').click();
def delete_workspace(self): #Don't delete the default "Take the Tour" workspace, just close the workspace if self.driver.title == "Take the Tour": self.driver.close() return True #Click on the cog icon and then select the delete workspace option what = self.get_xpath("cog_icon") cog_icon = WebDriverWait(self.driver, 5).until(EC.element_to_be_clickable((By.XPATH, what))) cog_icon.click() what = self.get_xpath("delete_workspace") delete_button = WebDriverWait(self.driver, 5).until(EC.element_to_be_clickable((By.XPATH, what))) delete_button.click() #If there are no widgets then clicking the delete workspace option will close the workspace so wait a few seconds for it to close and then switch to the open window #(TODO: Figure out a better way to wait for the window to close) time.sleep(2) self.driver.switch_to_window(self.driver.window_handles[-1]) #The confirmation page will only appear if there are widgets on the workspace so ignore the timeout if the confimration doesn't appear what = self.get_xpath("delete_workspace_confirmation") wait = WebDriverWait(self.driver, 5) try: confirmation_window = wait.until(EC.element_to_be_clickable((By.XPATH, what))) except TimeoutException, e: return True
def getupc(data, sleeptime): display = Display(visible=0, size=(800, 600)) display.start() a = webdriver.Firefox() a.get('https://www.google.com/ncr') time.sleep(sleeptime) search = WebDriverWait(a, 5).until(EC.element_to_be_clickable((By.XPATH, "//input[@type='text']"))) for i in data: ActionChains(a).move_to_element(search).click(search).send_keys(i['name'] + ' upc', Keys.ENTER).perform() time.sleep(sleeptime) contents = WebDriverWait(a, 5).until(EC.presence_of_all_elements_located((By.XPATH, "//div[@class='g']"))) try: upc = next( (re.split(r'/', href.find_element_by_tag_name('a').get_attribute('href'))[-1] for href in contents if href.find_element_by_tag_name('a').get_attribute('href').startswith( 'http://www.upcitemdb.com/upc'))) i['upc'] = upc except StopIteration: pass search = WebDriverWait(a, 5).until(EC.element_to_be_clickable((By.XPATH, "//input[@type='text']"))) search.clear() a.close() display.stop() return data
def get_browser(username, password): """Get an instance of a firefox browser""" browser = webdriver.Firefox() browser.set_window_size(1020, 800) # set username browser.get('https://www.cgd.pt') elem = WebDriverWait(browser, 10).until( EC.presence_of_element_located((By.ID, 'input_cx1')) ) elem.send_keys(username + Keys.ENTER) # close warnings elem = WebDriverWait(browser, 10).until( EC.element_to_be_clickable((By.XPATH, '//*[@title="Fechar Aviso"]')) ) elem.click() # add password elem = WebDriverWait(browser, 10).until( EC.presence_of_element_located((By.ID, 'passwordInput')) ) elem.send_keys(password + Keys.ENTER) # close warnings elem = WebDriverWait(browser, 10).until( EC.element_to_be_clickable((By.CLASS_NAME, 'botao_ok')) ) elem.click() return browser
def test_003_GotoScheduler(self): _ = wait.until(EC.element_to_be_clickable((By.CSS_SELECTOR, 'i.entypo-menu'))) driver.find_element_by_css_selector("i.entypo-menu").click() _ = wait.until(EC.element_to_be_clickable((By.LINK_TEXT, 'Расписание'))) driver.find_element_by_link_text("Расписание").click() _ = wait.until(EC.element_to_be_clickable((By.CLASS_NAME, 'add-meeting'))) print('тест №3 - переход в раздел "Расписание"')
def ModelMenuNav(w,x,y,z): MENU_SECTION = wait.until(EC.element_to_be_clickable((By.XPATH, x))) # SECTION should go here MENU_SECTION.click() # attempting to execute javascript to resolve IE issue with dropdowns disappearing # too quickly and forcing test 1 to fail. # driver.execute_script('id="category_Sedans"') # Below is another possible fix being investigated for IE dropdown issue using ActionChains module import. # This attempts to hover the mouse over the element. # hover = ActionChains(driver).move_to_element(MENU_SECTION) # hover.perform() MENU_NAV = wait.until(EC.element_to_be_clickable((By.CSS_SELECTOR, y))) # ELEMENT should go here # Part of ActionChains module import for IE dropdown issue fix. # hover = ActionChains(driver).move_to_element(MENU_NAV) # hover.perform() MENU_NAV.click() # It's not good to use time.sleep() in selenium scripts, however in this instance it appears to be # an acceptable execution, as it is allowing the below print statments to be triggered after the # above click. Without a time delay, the print statements were occasionally printing the content # before the menu click was fully executed, thus not providing accurate info. time.sleep(timeSleep) print ' Model Name: ' + w # NAME should go here print 'actual Title: ' + driver.title print 'expected URL: ' + real_url(base_url) + z # URL should go here print ' actual URL: ' + driver.current_url print ' URL Match: ' + matchIt(real_url(base_url) + z, driver.current_url) + '\n' # URL should go here driver.get(base_url) '''
def NonModelMenuNav(w,x,y,z): MENU_SECTION = wait.until(EC.element_to_be_clickable((By.ID, x))) # SECTION should go here MENU_SECTION.click() MENU_NAV = wait.until(EC.element_to_be_clickable((By.CSS_SELECTOR, y))) # ELEMENT should go here MENU_NAV.click() try: time.sleep(timeSleep) aw = driver.window_handles # wait.until((EC.title_contains, NAME(aw[1]))) # This switches the selenium controls from the main (default) window to the newly opened # window, only if a new window was opened from the menu click. driver.switch_to_window(aw[1]) print ' Button Name: ' + w # NAME should go here print 'Actual Title: ' + driver.title print 'Expected URL: ' + z # URL should go here print ' Actual URL: ' + driver.current_url print ' URL Match: ' + matchIt(z, driver.current_url) + '\n' # URL should go here time.sleep(1) driver.close() # This switches selenium controls back to the main (default) window. driver.switch_to_window(aw[0]) #driver.switch_to_default_content() except (IndexError, TimeoutException, NoSuchWindowException): time.sleep(timeSleep) print ' Button Name: ' + w # Name should go here print 'Actual Title: ' + driver.title print 'Expected URL: ' + real_url(base_url) + z # URL should go here print ' Actual URL: ' + driver.current_url print ' URL Match: ' + matchIt(real_url(base_url) + z, driver.current_url) + '\n' # URL should go here driver.get(base_url)
def wait_for_element(driver, debug, ele, etype, timeout): """ this function monitors a html page before executing the script further and waits for an element to appear 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 """ print_debug(debug, 'wait_for_element: {0}:{1}:{2}'.format(etype, ele, timeout)) try: if etype == 'id': element_present = EC.element_to_be_clickable((By.ID, ele)) elif etype == 'id-starts-with': element_present = EC.element_to_be_clickable((By.XPATH, '//*[starts-with(@id,"%s")]' % ele)) elif etype == 'name': element_present = EC.element_to_be_clickable((By.NAME, ele)) elif etype == 'class': element_present = EC.element_to_be_clickable((By.CLASS_NAME, ele)) # element_present = EC.presence_of_element_located((By.XPATH, '//@class, "%s"]' % (ele))) else: element_present = EC.presence_of_element_located((By.XPATH, '//%s[text()="%s"]' % (etype, ele))) WebDriverWait(driver, timeout).until(element_present) print_debug(debug, "found {0}:{1}".format(etype, ele)) return True except TimeoutException: print_debug(debug, "Timed out waiting for page to load {0}:{1}".format(etype, ele)) return False
def execute(self, driver, config): #clicking on "Locations" driver.find_element_by_xpath("//md-card-content/md-list-item[3]/div/a").click() #wait until all locations be there element = WebDriverWait(driver, 20).until( EC.element_to_be_clickable((By.XPATH, '//table')) ) #create a list of locations rowCount = len(driver.find_elements(By.XPATH, "//table/tbody/tr")) for i in range(1, rowCount+1): object = driver.find_element_by_xpath("//table/tbody/tr["+str(i)+"]/td[2]/a").text n = object LocationList.append(n) print LocationList # click on the second location driver.find_element_by_xpath("//table/tbody/tr[1]/td[2]/a").click() #wait till settings will be clickable element = WebDriverWait(driver, 20).until( EC.element_to_be_clickable((By.XPATH, '//md-sidenav[2]/md-content/ul/li[14]/menu-link/a/span')) ) element.click() # deleting location driver.find_element_by_xpath("//location-settings-menu/md-menu/button").click() element = WebDriverWait(driver, 20).until( EC.element_to_be_clickable((By.XPATH, "(//button[@type='button'])[6]")) ) element.click() driver.find_element_by_xpath("(//button[@type='button'])[6]").click() driver.find_element_by_xpath("(//button[@type='button'])[32]").click() driver.find_element_by_xpath("(//button[@type='button'])[34]").click()
def load_people(self): self.driver.get(self.base_url + "/people") WebDriverWait(self.driver, TEMPER).until(element_to_be_clickable((By.CSS_SELECTOR, ".author"))) self.driver.get(self.base_url + "/person/Meir%20Abulafia") WebDriverWait(self.driver, TEMPER).until(element_to_be_clickable((By.CSS_SELECTOR, "#place-map"))) return self
def test_000_crMeetForUserA(self): _ = wait.until(EC.element_to_be_clickable((By.ID, 'LoginForm_username'))) assert "Login" in driver.title elem = driver.find_element_by_id("LoginForm_username") elem.send_keys("Ipad") elem = driver.find_element_by_id("LoginForm_password") elem.send_keys("ipad") elem.send_keys(Keys.RETURN) print(' логинимся в систему') _ = wait.until(EC.element_to_be_clickable((By.CSS_SELECTOR, 'i.entypo-menu'))) driver.find_element_by_css_selector("i.entypo-menu").click() time.sleep(2) driver.find_element_by_link_text("Расписание").click() _ = wait.until(EC.element_to_be_clickable((By.CLASS_NAME, 'add-meeting'))) print(' переход в раздел "Расписание"') time.sleep(1) driver.find_element_by_xpath("//div[@id='bs-example-navbar-collapse-3']/div[5]/div[2]").click() time.sleep(3) driver.find_element_by_id('MeetingsData_S_NAME').send_keys('Пользователь А') driver.find_element_by_xpath('//div[8]/div/span/span/span/span[2]').click() time.sleep(2) driver.find_element_by_xpath('//body[@id="ui-id-1"]/span/span/span/input').send_keys('login' + Keys.ENTER) driver.find_element_by_id('MeetingsData_D_START').clear() driver.find_element_by_id('MeetingsData_D_START').send_keys('20:22' + Keys.ENTER) driver.find_element_by_id('MeetingsData_D_END').clear() driver.find_element_by_id('MeetingsData_D_END').send_keys('20:52' + Keys.ENTER) time.sleep(2) driver.find_element_by_name('yt0').click() print(' Проверка передачи изменений в совещании для\n ' 'пользователя А(+ outlook acc.) и Б (- outlook acc.) \n' '- Заполняем форму создания совещания для пользоватлея А (ipad)')
def load_ref(self, ref, filter=None, lang=None): """ takes string ref or object Ref :param ref: :param filter: "all", "Rashi", etc :return: """ if isinstance(ref, basestring): ref = Ref(ref) assert isinstance(ref, Ref) url = self.base_url + "/" + ref.url() if filter is not None: url += "&with={}".format(filter) if lang is not None: url += "&lang={}".format(lang) self.driver.get(url.replace("&", "?", 1)) if filter == "all": WebDriverWait(self.driver, TEMPER).until(element_to_be_clickable((By.CSS_SELECTOR, ".categoryFilter"))) elif filter is not None: # Filters load slower than the main page WebDriverWait(self.driver, TEMPER).until(element_to_be_clickable((By.CSS_SELECTOR, ".filterSet > .textRange"))) else: WebDriverWait(self.driver, TEMPER).until( element_to_be_clickable((By.CSS_SELECTOR, ".textColumn .textRange .segment"))) WebDriverWait(self.driver, TEMPER).until(element_to_be_clickable((By.CSS_SELECTOR, ".linkCountDot"))) self.set_modal_cookie() return self
def load_gardens(self): self.driver.get(self.base_url + "/garden/jerusalem") WebDriverWait(self.driver, TEMPER).until( element_to_be_clickable((By.CSS_SELECTOR, "#filter-1 g.row"))) # individual filter row WebDriverWait(self.driver, TEMPER).until( element_to_be_clickable((By.CSS_SELECTOR, ".dc-grid-item .result-text .en"))) # individual result text return self
def test_check_job_details_page(self): driver=self.driver self.mine_job() job_id=self.submit_job() self.assertTrue(self.wait_job_end(job_id)) self.open_job_page(job_id) recipeset_id=self.get_recipe_set_id_from_openning_job_page() recipe_id=self.get_recipe_id_from_openning_job_page() driver.find_element_by_xpath("//a[@class='btn results-tab']").click() driver.find_element_by_xpath("//a[@class='btn hide-results-tab']").click() driver.find_element_by_xpath("//button[@class='btn']").click() driver.find_element_by_xpath("//button[@class='btn']").click() #update whiteboard driver.find_element_by_xpath("//a[@class='list']").click() driver.find_element_by_id("whiteboard").send_keys("Automation-test") driver.find_element_by_xpath("//button[@type='submit']").click() #update Rentention Tag driver.refresh() table=WebDriverSelect(driver.find_element_by_id("job_retentiontag")) table.select_by_index(7) element = WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.XPATH, "//div[@class='ui-dialog-buttonset']/button[1]"))) element.click() driver.refresh() table=WebDriverSelect(driver.find_element_by_id("job_retentiontag")) table.select_by_index(2) element = WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.XPATH, "//div[@class='ui-dialog-buttonset']/button[1]"))) element.click() #Check kickstart is avaiable driver.refresh() driver.find_element_by_xpath("//a[contains(@href,'kickstart')]").click() self.assertIn("%post",driver.page_source)
def _grab_current_hours(): """ This method will open a chrome window, log the user in to okta with their workiva email, open ADP Workforce, go to their timecard, and return their current hours. """ driver = webdriver.Chrome() driver.get(se.ADP["okta"]) wait = WebDriverWait(driver, 10) wait.until(EC.element_to_be_clickable((By.ID, "signin-button"))) username = driver.find_element_by_id("user-signin") username.send_keys(se.ADP["username"]) password = driver.find_element_by_id("pass-signin") password.send_keys(se.ADP["password"]) sign_in = driver.find_element_by_id("signin-button") sign_in.click() driver.get("%shome/adp_workforce_now/" % se.ADP["okta"] + \ "0oac91hvcoOAQQBOYUYZ/3311") element = wait.until(EC.element_to_be_clickable((By.ID, "Myself_navItem"))) nav_item = driver.find_element_by_id("Myself_navItem") # Hover to show menu buttons. action = ActionChains(driver) action.move_to_element(nav_item) action.perform() driver.find_element_by_id("Myself_ttd_Time&Attendance_MyTimeEntry").click() driver.implicitly_wait(7)
def searchMS(msRun): try: element = wait.until(EC.element_to_be_clickable((By.XPATH, '//*[@id="bodyCell"]/div[4]/div/div[2]/table/tbody/tr[1]/th[6]/a/img'))) element.click() except selenium.common.exceptions.TimeoutException: try: element = wait.until(EC.element_to_be_clickable((By.XPATH, '/html/body/div/div[2]/table/tbody/tr/td[2]/div[5]/div/div[2]/table/tbody/tr[1]/th[6]/a'))) element.click() except: print("Error Sorting Master Scheduler") i = 2 element= wait.until(EC.element_to_be_clickable((By.XPATH,'//*[@id="bodyCell"]/div[4]/div/div[2]/table/tbody/tr['+str(i)+']/th'))) try: #find a way to get count more cleanly while( element != None): if 'MasterScheduler scheduled:' in element.text: element= driver.find_element_by_xpath('//*[@id="bodyCell"]/div[4]/div/div[2]/table/tbody/tr['+str(i)+']/td[5]') if str(prettyDate) in str(element.text): workingRow.append("RUNNING") msRun = True break i = i+1 element= driver.find_element_by_xpath('//*[@id="bodyCell"]/div[4]/div/div[2]/table/tbody/tr['+str(i)+']/th') except NoSuchElementException: emptyVariable = 0 return msRun
def test_fail_login(self): print "Starting Login and Logout Test" wait = WebDriverWait(self.driver, self.waitTime) self.driver.get(self.url) wait.until(EC.element_to_be_clickable((By.ID, 'login-button'))).click() wait.until( EC.element_to_be_clickable((By.ID, 'weebly-username'))).click() wait.until( EC.element_to_be_clickable((By.ID, 'weebly-password'))).click() Username = self.driver.find_element_by_id('weebly-username') Username.send_keys(self.email) Password = self.driver.find_element_by_id('weebly-password') Password.send_keys("wrong") self.driver.find_element_by_xpath("//input[@value='Log in']").click() for i in range(60): try: if "Wrong username or password" == self.driver.find_element_by_css_selector("div.popover-content").text: break except: pass time.sleep(1) else: self.fail("time out") try: self.assertEqual("Wrong username or password", self.driver.find_element_by_css_selector( "div.popover-content").text) except AssertionError as e: self.verificationErrors.append(str(e))
def share(self, path, target_email): url = "https://www.dropbox.com/" print 'Get access token from Dropbox' print 'Open auth url:', url browser = webdriver.PhantomJS(service_log_path=os.path.join(tempfile.gettempdir(), 'ghostdriver.log'), service_args=['--ignore-ssl-errors=true', '--ssl-protocol=tlsv1']) browser.get(url) try: wait = WebDriverWait(browser, 30) btn = wait.until(EC.element_to_be_clickable((By.XPATH, "//div[@id='sign-in']/a"))) btn.click() email = wait.until(EC.element_to_be_clickable((By.XPATH, "//input[@id='login_email']"))) email.send_keys(raw_input("Enter your Dropbox email:")) pwd = browser.find_element_by_xpath("//input[@id='login_password']") pwd.send_keys(getpass.getpass("Enter your Dropbox password:"******"//a[text()='%s']" % path))) target_folder.click() wait.until(EC.title_contains("%s" % path)) share_btn = browser.find_element_by_xpath("//a[@id='global_share_button']") share_btn.click() target = wait.until(EC.element_to_be_clickable((By.XPATH, "//form[@class='invite-more-form']//input[@spellcheck][@type='text']"))) target.send_keys(target_email) confirm_btn = browser.find_element_by_xpath("//form[@class='invite-more-form']//input[@type='button'][1]") confirm_btn.click() except: print(browser.title) assert False # print(browser.current_url) # print(browser.page_source) pass
def test_9dReport(self): report = driver.find_element_by_link_text("Отчёты") report.click() time.sleep(1) # Отчёт по контрольным точкам report1 = driver.find_element_by_link_text("Отчёт по контрольным точкам") report1.click() title = wait.until(EC.title_is('ЭОР - Report')) assert "500" not in driver.title # проверка на 500/404 ошибку assert "404" not in driver.title _ = wait.until(EC.element_to_be_clickable((By.ID, 'load_table'))) assert "500" not in driver.title # проверка на 500/404 ошибку assert "404" not in driver.title # Отчёт Проект Расписания schedule = driver.find_element_by_link_text('Отчёт Проект Расписания') schedule.click() _ = wait.until(EC.element_to_be_clickable((By.CLASS_NAME, 'title_gears'))) title = wait.until(EC.title_is('ЭОР - Schedule')) assert "500" not in driver.title # проверка на 500/404 ошибку assert "404" not in driver.title assert "ЭОР - Schedule" in driver.title # Отчёт Рейтинги rating = driver.find_element_by_link_text('Отчёт Рейтинги') rating.click() _ = wait.until(EC.element_to_be_clickable((By.CLASS_NAME, 'title_gears'))) title = wait.until(EC.title_is('ЭОР - Rating')) assert "500" not in driver.title # проверка на 500/404 ошибку assert "404" not in driver.title assert "ЭОР - Rating" in driver.title
def create_contest(driver, contest_alias, scoreboard_time_percent=100): '''Creates a new contest.''' driver.wait.until( EC.element_to_be_clickable( (By.ID, 'nav-contests'))).click() with driver.page_transition(): driver.wait.until( EC.element_to_be_clickable( (By.XPATH, ('//li[@id = "nav-contests"]' '//a[@href = "/contest/new/"]')))).click() driver.wait.until( EC.visibility_of_element_located( (By.ID, ('title')))).send_keys(contest_alias) driver.browser.find_element_by_id('alias').send_keys( contest_alias) driver.browser.find_element_by_id('description').send_keys( 'contest description') scoreboard_element = driver.browser.find_element_by_id('scoreboard') scoreboard_element.clear() scoreboard_element.send_keys(scoreboard_time_percent) with driver.page_transition(): driver.browser.find_element_by_tag_name('form').submit()
def add_students_bulk(driver, users): '''Add students to a recently created contest.''' driver.wait.until( EC.element_to_be_clickable( (By.CSS_SELECTOR, ('li.contestants > a')))).click() driver.wait.until( EC.visibility_of_element_located( (By.CSS_SELECTOR, 'div.contestants'))) driver.wait.until( EC.visibility_of_element_located( (By.XPATH, ( '//textarea[contains(@class, "contestants")]')))).send_keys( ', '.join(users)) driver.wait.until( EC.element_to_be_clickable( (By.CLASS_NAME, ('user-add-bulk')))).click() for user in users: driver.wait.until( EC.visibility_of_element_located( (By.XPATH, '//table[contains(@class, "participants")]//a[text()="%s"]' % user)))
def fortune_fetch_links(string,driver): url='http://fortune.com/?s="'+string.replace(' ','+')+'"' links_fetched = [] check_sum=0 try: driver.get(url) check_sum=1 WebDriverWait(driver,100).until(EC.element_to_be_clickable((By.XPATH,'//*[@id="content"]/div/div/div/aside/form/div/div/button'))) except: while check_sum==1: try: driver.get(url) WebDriverWait(driver,100).until(EC.element_to_be_clickable((By.XPATH,'//*[@id="content"]/div/div/div/aside/form/div/div/button'))) check_sum=0 print '\n\nReconnected...\n\n' except: print "Network Error... Trying to Reconnect..." time.sleep(5) try: scrolls=int(driver.find_element_by_xpath('//*[@id="content"]/div/div/div/section/section[2]/div[1]/h2').text.split()[0])/10+1 except: scrolls=0 for _ in xrange(scrolls): driver.execute_script("window.scrollTo(0, document.body.scrollHeight);") time.sleep(3) elem=driver.find_elements_by_xpath('//*[@id="content"]/div/div/div/section/section[2]/div[2]/div/div/article/h3/a') dates=driver.find_elements_by_xpath('//*[@id="content"]/div/div/div/section/section[2]/div[2]/div/div/article/time') for i,j in zip(elem,dates): i=i.get_attribute('href') j=int(j.text.split(',')[1].strip()) if j<=2008 and i not in links_fetched: if 'video' not in i: links_fetched.append(i) driver.quit() return links_fetched
def test_admin_view_a_contracts_signatures_8234(self): """View a contract's signatories. Steps: Click on the 'Terms' option Click on Signatures next to chosen draft contract Expected Result: Displays list of signatures for the chosen contract. """ self.ps.test_updates['name'] = 't1.35.007' \ + inspect.currentframe().f_code.co_name[4:] self.ps.test_updates['tags'] = ['t1', 't1.35', 't1.35.007', '8234'] self.ps.test_updates['passed'] = False # Test steps and verification assertions self.admin.wait.until( expect.element_to_be_clickable( (By.XPATH, '//a[contains(text(),"Terms")]') ) ).click() wait = WebDriverWait(self.admin.driver, 45) self.admin.driver.find_element( By.XPATH, '//a[text()="Signatures"]').click() wait.until( expect.element_to_be_clickable( (By.XPATH, '//div[contains(@class,"signature_index")]') ) ) self.ps.test_updates['passed'] = True
def test_002_GotoQuestions(self): wait.until(EC.element_to_be_clickable((By.CSS_SELECTOR, 'i.entypo-menu'))) driver.find_element_by_css_selector("i.entypo-menu").click() wait.until(EC.element_to_be_clickable((By.LINK_TEXT, 'Вопросы/Приоритеты'))) driver.find_element_by_link_text("Вопросы/Приоритеты").click() wait.until(EC.element_to_be_clickable((By.ID, 'search-show'))) print('Переходим в раздел "Вопросы/Приоритеты"')
def clickOnImage0(self): wait = WebDriverWait(self.driver, 60) image = wait.until(EC.element_to_be_clickable( (By.XPATH, "//img[@src='https://bizibazapics.s3.amazonaws.com/Ads/2644265007210509201713043.jpeg']"))) image.click()
def signup_test(driver): print("SIGNUP TEST...") # click on login/register button elem = driver.find_elements_by_css_selector("#navbars_dropdowns button")[2] elem.click() # fill sign up box wait = WebDriverWait(driver, 10) user = wait.until(EC.element_to_be_clickable((By.ID, 'username'))) pwrd = driver.find_element_by_id("password") cbox = driver.find_element_by_name("reg") sbox = driver.find_element_by_id("show_password_checkbox") user.clear() pwrd.clear() user.send_keys("demo_user") pwrd.send_keys("password") cbox.click() # fill in confirm password pwrd = wait.until(EC.element_to_be_clickable((By.ID, 'password_confirm'))) pwrd.send_keys("password") sbox.click(); time.sleep(1); sbox.click() time.sleep(1) elem = driver.find_element_by_css_selector("button.btn.btn-secondary.pull-right") elem.click() # fill in full details page email = wait.until(EC.element_to_be_clickable((By.ID, 'inputEmail'))) body = driver.find_element_by_tag_name("body") fname = driver.find_element_by_id("inputFirstname") lname = driver.find_element_by_id("inputLastname") edlvl = driver.find_element_by_id("inputEduLevel") intrs = driver.find_element_by_css_selector("button.btn.dropdown-toggle") knowl = driver.find_element_by_css_selector("button[data-id='inputConcepts']") driver.execute_script("window.scrollBy(0,300)") time.sleep(1) email.send_keys('*****@*****.**') fname.clear(); fname.send_keys('Demo') lname.clear(); lname.send_keys('User') time.sleep(1) edlvl.click(); time.sleep(1) edlvl.send_keys("m") edlvl.send_keys(Keys.RETURN) time.sleep(1) intrs.click(); time.sleep(1) intrs.send_keys("data"); time.sleep(0.5); intrs.send_keys(Keys.RETURN) intrs.click(); time.sleep(1) intrs.send_keys("algo"); time.sleep(0.5); intrs.send_keys(Keys.RETURN) time.sleep(0.5) knowl.click(); time.sleep(1) knowl.send_keys("ai"); time.sleep(0.5); knowl.send_keys(Keys.RETURN) time.sleep(1) # submit driver.find_element_by_css_selector("button.btn.btn-lg.btn-primary").click() time.sleep(2) # go to user home wait.until(EC.element_to_be_clickable((By.ID, 'home_entry'))).click() time.sleep(2)
def test_create_stops(driver): connect = connect_db() conn = db.create_engine( 'postgresql_postGIS://sc_user:[email protected]:5432/zms_serv3?searchapath=route_info' ) connect.execute(db.select([route_info.stops])) records = connect.fetchone() connect.execute('select ext_stop_id from route_info.stops') all_stops = connect.fetchall() best_list = [] for moms in all_stops: best_list.append(all_stops.split(',),')) print(str(best_list)) connect.close() # Тестовые данные для создания остановок # Названия остановок прямого и обратного рейса stops_name = [ 'ВДНХ (Южная)', '1-я Останкинская (ул. Академика Королева) Остановка наземно', 'Цандера (ул. Академика Королёва)', 'ВДНХ (Южная)', 'Цандера (ул. Академика Королёва)', 'Аргуновская' ] # Список координат широты stops_latitudes = [ 37.634885, 37.633789, 37.632607, 37.634747, 37.628352, 37.628352 ] # Список координат долготы stops_longitudes = [ 55.823553, 55.821562, 55.821853, 55.823437, 55.821854, 55.821481 ] # Код присвоения stops_counter_id = int(records[0]) test_login(driver) wait_time() wait = WebDriverWait(driver, 30) wait.until( EC.element_to_be_clickable( (By.TAG_NAME, "div[class='left-nav__menu-unit-header-title']"))) # left_elements = driver.find_elements_by_tag_name("div[class='left-nav__menu-unit-header-title']") # print(len(left_elements)) WebDriverWait(driver, 30) driver.find_elements_by_tag_name( "div[class='left-nav__menu-unit-header-title']")[2].click() WebDriverWait(driver, 10) driver.find_elements_by_tag_name( "div[class='collapsed none-collapsed'] div")[18].click() WebDriverWait(driver, 20) driver.find_element_by_tag_name("a[href='/route/routeInfo/stops']").click() wait_time() # Реализация цикла по созданию остановки # вычисляем количество остановок stops = len(остановки прямого рейся) + len(остановки обратного рейса) stops = len(stops_name) for stop in range(stops): #driver.delete_all_cookies() WebDriverWait(driver, 30) # Нажать кнопку "Создать остановку" driver.find_element_by_tag_name( "i[class='material-icons button-icon']").click() wait_time() driver.find_elements_by_tag_name( "div[class='col col-5'] div[class='vue-select io']")[0].click() wait_time() wait.until( EC.presence_of_element_located( (By.TAG_NAME, "div[class='vue-select__options-box']" " div[class='vue-select__options-holder']" " div[class='vue-select__option']"))) # Выбор "города # ПАТ - news #driver.find_elements_by_tag_name("div[class='vue-select__options-box'] div[class='vue-select__search']")[3].send_keys("Санкт-Петербург") #driver.find_elements_by_tag_name("div[class='vue-select__options-box'] div[class='vue-select__options-holder'] div[class='vue-select__option']")[9].click() # zms_serv1 #driver.find_elements_by_tag_name("div[class='vue-select__options-box'] div[class='vue-select__options-holder'] " # "div[class='vue-select__option']")[48].click() driver.find_elements_by_tag_name( "div[id='city'] div[id='5']")[0].click() wait_time() # Выбор агенства в БД news PAT #driver.find_elements_by_tag_name("div[class='vue-select__options-box'] div[class='vue-select__options-holder']" # " div[class='vue-select__option']")[10].click() # zms_serv1 # driver.find_elements_by_tag_name("div[class='vue-select__options-box'] div[class='vue-select__options-holder'] " # "div[class='vue-select__option']")[35].click() driver.find_elements_by_tag_name( "div[class='col col-5'] div[class='vue-select io']")[0].click() wait_time() driver.find_elements_by_tag_name( "div[id='agency'] div[id='1']")[0].click() wait_time() current_stops_id = stops_counter_id for i in range(stops): for j in range(1, len(all_stops)): if '2812' != all_stops[j - 1]: if j == all_stops[len(all_stops) - 1]: driver.find_element_by_tag_name( "div[class='col col-2'] " "input[class='io']").send_keys( str(current_stops_id + 1)) else: current_stops_id += 1 wait_time() driver.find_elements_by_tag_name("div[class='col col-6'] " "input[class='io']")[0].send_keys( str(stops_longitudes[stop])) driver.find_elements_by_tag_name("div[class='col col-6'] " "input[class='io']")[0].send_keys( str(stops_latitudes[stop])) driver.find_elements_by_tag_name("div[class='col col-6'] " "input[class='io']")[0].send_keys( stops_name[stop]) driver.find_elements_by_tag_name("div[class='col col-6'] " "input[class='io']")[0].send_keys( stops_name[stop]) wait_time() driver.find_element_by_tag_name( "div[class='margin-top'] button[class='btn btn-success']").click() wait_time()
flight_tab = browser.find_element_by_xpath("//span[contains(text(),'Flights')]") flight_tab.click() roundtrip_btn = browser.find_element_by_id("flight-type-roundtrip-label-hp-flight") roundtrip_btn.click() from_input = browser.find_element_by_id("flight-origin-hp-flight") from_input.send_keys("SFO") destination_input = browser.find_element_by_id("flight-destination-hp-flight") destination_input.send_keys("NYC") departing_date = browser.find_element_by_id("flight-departing-hp-flight").send_keys("05/01/2020") returning_date = browser.find_element_by_id("flight-returning-hp-flight").send_keys("05/08/2020") travelers = browser.find_element_by_id("traveler-selector-hp-flight").click() search_btn = browser.find_element_by_class_name("btn-primary.btn-action.gcw-submit").click() assert "SFO to NYC Flights | Expedia" in browser.title #explicit wait wait = WebDriverWait(browser, 10) nonstop_checkbox = wait.until(EC.element_to_be_clickable((By.ID, "stopFilter_stops-0"))) nonstop_checkbox.click() time.sleep(5) browser.quit()
os.makedirs(DIFF_DIR) q = queue.Queue(maxsize=2) server_thread = threading.Thread(target=run_server_bg, name=f"ioloop", args=(fbase, fremote, q)) server_thread.start() port = q.get() driver.get(f"http://127.0.0.1:{port}/difftool") checkbox = WebDriverWait(driver, 10).until( EC.presence_of_element_located((By.ID, "nbdime-hide-unchanged"))) if checkbox.is_selected(): checkbox.click() export_btn = WebDriverWait(driver, 20).until( EC.element_to_be_clickable((By.ID, "nbdime-export"))) export_btn.click() for second in range(10): if os.path.isfile(dl_path): page_filename = f"diff-{index}.html" shutil.move(dl_path, os.path.join(DIFF_DIR, page_filename)) links.append( dict(page=page_filename, text=html.escape( f"Diff for {fbase.name} vs {fremote.name}"))) break else: time.sleep(1) else: print("Didn't find file in time, downloaded: " +
def navigate_to_login_page(self): self.open() self.wait.until(expected_conditions.element_to_be_clickable((By.XPATH, self.sign_in_link_xpath))) self._sign_in_link().click() return LoginPage(self.driver)
def clickOnImage2(self): wait = WebDriverWait(self.driver, 60) image = wait.until(EC.element_to_be_clickable( (By.XPATH, "//img[@src ='https://bizibazapics.s3.amazonaws.com/Ads/3756540828060405201712318.jpeg']"))) image.click()
def close_disclaimer(self): """ Close Disclaimer """ self.wait.until( EC.element_to_be_clickable( (By.CSS_SELECTOR, "svg.styles_closeIcon__1QwbI"))).click() time.sleep(2)
def close_cyclorama(self): """Open Cyclorama""" self.wait.until( EC.element_to_be_clickable( (By.XPATH, '//*[@id="root"]/div/div/div[2]'))).click() time.sleep(5)
def click_input_box(self): """Click the input box""" self.wait.until( EC.element_to_be_clickable( (By.XPATH, '//*[@id="root"]/div/div/header/div[1]'))).click() time.sleep(2)
def toggle_accordion(self): """Toggle Accordion""" self.wait.until( EC.element_to_be_clickable( (By.XPATH, '//*[@id="list-view"]/div[1]/div'))).click() time.sleep(2)
def clear_results(self): """Clear search results""" self.wait.until( EC.element_to_be_clickable( (By.XPATH, '//*[@id="root"]/div/div/header/div[2]'))).click() time.sleep(5)
def open_street_view(self): """Open streetview""" self.wait.until( EC.element_to_be_clickable( (By.XPATH, '//*[@id="root"]/div/div/div[3]/div[1]'))).click() time.sleep(10)
def toggle_all_item(self): """Toggle subtype item All""" self.wait.until( EC.element_to_be_clickable( (By.CSS_SELECTOR, 'ul.menu.subtype > li:last-child'))).click() time.sleep(3)
def web_driver_wait(self, locator, time=10): return WebDriverWait(self.driver, time).until(ec.element_to_be_clickable(locator))
def close_street_view(self): """Close streetview""" self.wait.until( EC.element_to_be_clickable( (By.XPATH, '//*[@id="streetViewContainer"]/div[1]'))).click() time.sleep(2)
def getbody(self): """利用phantomjs获取网站源码以及url""" d = self.q_phantomjs.get() print('driver id: ' + str(d)) print('opening url: %s' % self.home_url) # d.maximize_window() d.get(self.home_url) print('logging, user name: %s' % self.username) wait = WebDriverWait(d, 20) input_name = wait.until( EC.presence_of_element_located((By.XPATH, "//*[@id='loginName']"))) # input_name.clear() input_name.send_keys(self.username) input_password = wait.until( EC.presence_of_element_located((By.XPATH, "//*[@id='loginPass']"))) input_password.send_keys(self.password) button = wait.until( EC.presence_of_element_located( (By.CLASS_NAME, 'geetest_radar_tip'))) button.click() time.sleep(1) # 步骤二:拿到没有缺口的图片 d.execute_script('document.querySelectorAll("canvas")[2].style=""') image1 = self.get_image(d, 'ori') time.sleep(1) # 步骤三:点击拖动按钮,弹出有缺口的图片 button = wait.until( EC.presence_of_element_located( (By.CLASS_NAME, 'geetest_slider_button'))) button.click() # 步骤四:拿到有缺口的图片 image2 = self.get_image(d, 'after') print(image1, image1.size) print(image2, image2.size) # 步骤五:对比两张图片的所有RBG像素点,得到不一样像素点的x值,即要移动的距离 distance = self.get_distance(image1, image2) # 步骤六:模拟人的行为习惯(先匀加速拖动后匀减速拖动),把需要拖动的总距离分成一段一段小的轨迹 tracks = self.get_tracks(distance) print('tracks:') print(tracks) print(image1.size) print(distance, sum(tracks)) # 步骤七:按照轨迹拖动,完全验证" button = wait.until( EC.presence_of_element_located(( By.CSS_SELECTOR, 'body > div.geetest_fullpage_click.geetest_float.geetest_wind.geetest_slide3 > div.geetest_fullpage_click_wrap > div.geetest_fullpage_click_box > div > div.geetest_wrap > div.geetest_slider.geetest_ready > div.geetest_slider_button' ))) # By.CLASS_NAME, 'geetest_slider_button' ActionChains(d).click_and_hold(button).perform() for track in tracks: ActionChains(d).move_by_offset(xoffset=track, yoffset=0).perform() else: ActionChains(d).move_by_offset(xoffset=3, yoffset=0).perform() # 先移过一点 ActionChains(d).move_by_offset(xoffset=-3, yoffset=0).perform() # 再退回来,是不是更像人了 time.sleep(0.5) # 0.5秒后释放鼠标 ActionChains(d).release().perform() time.sleep(1) # 步骤八:完成登录 login = wait.until( EC.element_to_be_clickable( (By.XPATH, '//*[@id="guestLogin"]/div[2]/div[5]'))) login.click() time.sleep(2) # d.get(special_edition_url) time.sleep(3) content = d.page_source.encode('utf-8') self.list(content) self.q_phantomjs.put(d)
def wait_for_element_clickable(self, by=By.XPATH, value=None, text=None): if text is not None: value = value % text wait = WebDriverWait(self.driver, 10) return wait.until(EC.element_to_be_clickable((by, value)))
def wait(x): WebDriverWait(driver, 30).until(EC.element_to_be_clickable((By.XPATH, x))) return
from selenium import webdriver from selenium.webdriver.support.ui import Select, WebDriverWait from selenium.webdriver.support import expected_conditions as EC from selenium.webdriver.common.by import By from bs4 import BeautifulSoup from lxml import etree urlS = webdriver.Chrome() urlS.get('http://www.bilibili.com/') p = urlS.current_url print(p) Wait = WebDriverWait(urlS, 3) #//*[@id="nav-searchform"]/div/button inputs = Wait.until( EC.element_to_be_clickable( (By.XPATH, '//*[@id="nav-searchform"]/div[1]/input'))) botton = Wait.until( EC.element_to_be_clickable((By.XPATH, '//*[@id="nav-searchform"]/div[2]'))) #//*[@id="nav-searchform"]/div[2] #index = Wait.until(EC.element_to_be_clickable((By.XPATH, '//*[@id="nav-searchform"]/div[1]/input'))) #//*[@id="nav-searchform"]/div[1]/input #index.click() inputs.click() inputs.send_keys('python') botton.click() all_w = urlS.window_handles urlS.switch_to.window(all_w[1]) u = urlS.page_source print(u) total_page = Wait.until(
def newApplicationFormOneStepFive(self): self.wait.until( EC.element_to_be_clickable( (By.XPATH, "//*[contains(text(),'Payment')]"))) paymentStep5 = self.driver.find_element( By.XPATH, "//*[contains(text(),'Payment')]") paymentStep5.click() self.wait.until( EC.element_to_be_clickable((By.XPATH, "//*[@for='Cheque']"))) radioCheque = self.driver.find_element(By.XPATH, "//*[@for='Cheque']") radioCheque.click() print("Cheque Selected.") chequeFill = self.driver.find_element( By.XPATH, "//*[@name='paymentChequeNumber']") chequeFill.send_keys('1234567234') calendarSelect = self.driver.find_element( By.XPATH, "//*[@name='paymentChequeDate']") calendarSelect.click() time.sleep(1) chequeDateSelect = self.driver.find_element(By.XPATH, "//*[text()='2']") chequeDateSelect.click() chequePayableSelect = self.driver.find_element( By.XPATH, "(//*[@ tabindex='0'])[2]") chequePayableSelect.click() time.sleep(1) optionInChequePayableSelect = self.driver.find_element( By.XPATH, "//*[text() = 'Local']") optionInChequePayableSelect.click() time.sleep(1) chequeBankName = self.driver.find_element( By.XPATH, "//*[@name='paymentChequeBankName']") chequeBankName.send_keys('asjdhfjasflh') chequeMicrFill = self.driver.find_element( By.XPATH, "//*[@name='paymentChequeMicr']") chequeMicrFill.send_keys('123456789') radioChequeRenewal = self.driver.find_element(By.XPATH, "//*[@for='ECS']") radioChequeRenewal.click() print("Cheque Selected.") raID = self.driver.find_element(By.XPATH, "(// *[@ tabindex='0'])[6]") raID.click() time.sleep(1) raIDValue = self.driver.find_element(By.XPATH, "//*[@id='liId_764878']") raIDValue.click() sourcingBranchCode = self.driver.find_element( By.XPATH, "//*[@id='sourcingBranchCode_idd']") sourcingBranchCode.send_keys("251") sourcingBranchCodeValue = self.driver.find_element( By.XPATH, "(// *[contains(text(), '251')])[2]") sourcingBranchCodeValue.click() buttonSave = self.driver.find_element(By.XPATH, "//*[text()='Save']") buttonSave.click() print("Save button clicked.")
# from selenium import webdriver # # browser = webdriver.Chrome() # # говорим WebDriver искать каждый элемент в течение 5 секунд # browser.implicitly_wait(5) # # browser.get("http://suninjuly.github.io/wait1.html") # # button = browser.find_element_by_id("verify") # button.click() # message = browser.find_element_by_id("verify_message") # # assert "successful" in message.text from selenium.webdriver.common.by import By from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC from selenium import webdriver browser = webdriver.Chrome() browser.get("http://suninjuly.github.io/wait2.html") # говорим Selenium проверять в течение 5 секунд, пока кнопка не станет кликабельной button = WebDriverWait(browser, 5).until(EC.element_to_be_clickable((By.ID, "verify"))) button.click() message = browser.find_element_by_id("verify_message") assert "successful" in message.text
except KeyError as err: #Set empty cause selected report doesnt have subreport categories #traceback.print_tb(err.__traceback__) pass except TypeError as err: traceback.print_tb(err.__traceback__) print( f"Error: tried to get a subcategory when needed but none were input into script in {report_string}. Check json" ) #Clicks in "This applies to links within the video description" if selected if THIS_APPLIES and report_string != "Captions issue" and report_string != "Infringes my rights": WebDriverWait(page, 20).until( EC.element_to_be_clickable(( By.CSS_SELECTOR, "paper-checkbox[aria-labelledby='yt-boolean-form-field-v2-renderer-label']" ))).click() #page.find_element_by_css_selector("paper-checkbox[aria-labelledby='yt-boolean-form-field-v2-renderer-label']").click() #Clicks in NEXT WebDriverWait(page, 20).until( EC.element_to_be_clickable( (By.CSS_SELECTOR, "paper-button[aria-label='Next']"))).click() #page.find_element_by_css_selector("paper-button[aria-label='Next']").click() #Looks for video duration and splits by ":" duration = page.find_element_by_css_selector( "span[class='ytp-time-duration']").text.split(":") #If video is more than an hour, convert hours to minutes and add it to minutes
def newApplicationFormOneStepTwo(self): windowBefore = self.driver.window_handles[0] self.wait.until( EC.element_to_be_clickable( (By.XPATH, "//*[@name='alternateMobileNo']"))) alternateMobileNumber = self.driver.find_element( By.XPATH, "//*[@name='alternateMobileNo']") alternateMobileNumber.send_keys("9650479781") purposeOfInsuranceDropdown = self.driver.find_element( By.XPATH, "(//*[@tabindex='0'])[3]") purposeOfInsuranceDropdown.click() optionInInsuranceDropdown = self.driver.find_element( By.XPATH, "//*[contains(text(),'Children')]") optionInInsuranceDropdown.click() print("Retirement Selected") lifeStageDropdown = self.driver.find_element( By.XPATH, "(//*[@tabindex='0'])[4]") lifeStageDropdown.click() optionInLifeStage = self.driver.find_element( By.XPATH, "//*[contains(text(), 'Married with children')]") optionInLifeStage.click() print("Single Selected") grossIncomeFill = self.driver.find_element(By.XPATH, "//*[@name='income']") grossIncomeFill.send_keys('900000') print("Gross Income Entered") existingPolicy = self.driver.find_element( By.XPATH, "(//*[contains(text(),'No')])[4]") existingPolicy.click() occupationDropdown = self.driver.find_element( By.XPATH, "(//*[@tabindex='0'])[5]") occupationDropdown.click() optionInOccupation = self.driver.find_element( By.XPATH, "//*[@id='liId_Salaried']") optionInOccupation.click() print("Salaried Selected") time.sleep(2) recommendProduct = self.driver.find_element(By.XPATH, "(//*[@tabindex='0'])[7]") recommendProduct.click() time.sleep(5) recommendProduct.click() time.sleep(1) optionInRecommendProduct = self.driver.find_element( By.XPATH, "//*[@id='liId_Max Life Future Genius Education Plan']") optionInRecommendProduct.click() print("Product Selected") premiumPaymentTerm = self.driver.find_element( By.XPATH, "(//*[@tabindex='0'])[8]") premiumPaymentTerm.click() time.sleep(1) optionInPremiumPaymentTerm = self.driver.find_element( By.XPATH, "//*[@id='liId_18']") optionInPremiumPaymentTerm.click() print("Premium Payment Selected") time.sleep(2) policyTerm = self.driver.find_element(By.XPATH, "(//*[@tabindex='0'])[9]") policyTerm.click() time.sleep(1) optionInPolicyTerm = self.driver.find_element(By.XPATH, "//*[@id='liId_21']") optionInPolicyTerm.click() print("Policy Term Selected") time.sleep(2) dividentAdjustment = self.driver.find_element( By.XPATH, "(//*[@tabindex='0'])[10]") dividentAdjustment.click() time.sleep(1) optionIndividentAdjustment = self.driver.find_element( By.XPATH, "//*[@id='liId_No Adjustment']") optionIndividentAdjustment.click() print("Dividend Selected") time.sleep(2) premiumCommitFill = self.driver.find_element( By.XPATH, "//*[@name='premiumCommitment']") premiumCommitFill.send_keys("90000") print("Sum Assured Filled") time.sleep(1) dividendDropdownSelected = self.driver.find_element( By.XPATH, "(//*[@tabindex='0'])[12]") dividendDropdownSelected.click() print("Dividend dropdown Clicked") time.sleep(2) optionIndividendDropdownSelected = self.driver.find_element( By.XPATH, "//*[@id='liId_Premium Offset']") optionIndividendDropdownSelected.click() print("Premium Offset selected") time.sleep(1) buttonProceedClick = self.driver.find_element( By.XPATH, "//*[contains(text(),'Proceed')]") buttonProceedClick.click() time.sleep(8) self.driver.switch_to_window(windowBefore)
def goto_result_page(self, url): ''' Arguments: 1. url: link to travel insurance homepage ''' logger.info('Test start here') #Init a chrome session driver = webdriver.Chrome(driverLocation) # Create an explicit wait handler with wait time is 10 seconds and frequency check is 1 second wait = WebDriverWait(driver, 10, poll_frequency=1) # Maximize current browser window driver.maximize_window() # Access to homepage driver.get(url) # Wait until homepage is loaded and button ĐĂNG NHẬP NGAY is clickable insurance_tab = wait.until( ec.element_to_be_clickable( (By.XPATH, "//a[@href='#Insurance' and @aria-controls='Insurance']"))) # Click tab Insurance insurance_tab.click() # Wait until insurance form is loaded, then click Travel tab travel_tab = wait.until( ec.visibility_of_element_located( (By.XPATH, "//a[@href='#Travel' and @aria-controls='Travel']"))) travel_tab.click() # Wait until Show my results is clickable show_result_bt = wait.until( ec.element_to_be_clickable( (By.XPATH, "//button[@name='product-form-submit']"))) show_result_bt.click() time.sleep(3) collepseFilter_btn = wait.until( ec.visibility_of_element_located( (By.XPATH, "//h5[@id='collapseFilterBtn']"))) collepseFilter_btn.click() try: expanded_element = wait.until( ec.invisibility_of_element_located(( By.XPATH, "//div[@id='collapseFilter' and @aria-expanded='false']"))) except Exception as e: print('Test expanded Filter failed') print('Exception: {}'.format(e)) if expanded_element: print('Test expanded Filter pass') else: print('Test expanded Filter failed') # Expand Filter form collepseFilter_btn.click() time.sleep(1) # Test radio button promos_only = driver.find_element_by_xpath( "//div[@data-filter-name='Promos Only']") promos_only.click() promos_only_radio = driver.find_element_by_xpath( "//div[@data-filter-name='Promos Only']/input[@type='radio' and @class='gb-radio__original']" ) time.sleep(1) if promos_only_radio.is_selected(): print('Test Promotion pass') else: print('Test Promotion failed') # Test checkbox insurers_pacific_cross = driver.find_element_by_xpath( "//div[@data-filter-name='Pacific Cross']") insurers_pacific_cross.click() pacific_cross_checkbox = driver.find_element_by_xpath( "//div[@data-filter-name='Pacific Cross']/input[@type='checkbox' and @class='gb-checkbox__original']" ) time.sleep(1) if pacific_cross_checkbox.is_selected(): print('Test Insurers pass') else: print('Test Insurers failed')
def newApplicationFormOneStepThree(self): time.sleep(5) self.wait.until( EC.element_to_be_clickable((By.XPATH, "//*[@name='fatherName']"))) fatherNameFill = self.driver.find_element(By.XPATH, "//*[@name='fatherName']") fatherNameFill.send_keys("Father") motherNameFill = self.driver.find_element(By.XPATH, "//*[@name='motherName']") motherNameFill.send_keys("Mother") maritalStatus = self.driver.find_element(By.XPATH, "(//*[@tabindex='0'])[2]") maritalStatus.click() time.sleep(1) optionInMaritalStage = self.driver.find_element( By.XPATH, "//*[contains(text(), 'Married')]") optionInMaritalStage.click() print("Single Selected") educationSelect = self.driver.find_element(By.XPATH, "(//*[@tabindex='0'])[3]") educationSelect.click() time.sleep(1) optionInEducationDropdown = self.driver.find_element( By.XPATH, "//*[contains(text(), 'Professional')][1]") optionInEducationDropdown.click() print("Education Selected") industrySelect = self.driver.find_element(By.XPATH, "(//*[@tabindex='0'])[4]") industrySelect.click() time.sleep(1) optionInIndustrySelect = self.driver.find_element( By.XPATH, "//*[contains(text(), 'Mining')][1]") optionInIndustrySelect.click() print("Industry Selected") organisationSelect = self.driver.find_element( By.XPATH, "(//*[@tabindex='0'])[5]") organisationSelect.click() time.sleep(1) optionInOrganisationSelect = self.driver.find_element( By.XPATH, "//*[@id='liId_Non-Profit organization (NPO)']") optionInOrganisationSelect.click() print("Organisation Selected") organisationFill = self.driver.find_element( By.XPATH, "//*[@name='companyName']") organisationFill.send_keys("ORG") preferredLanguage = self.driver.find_element( By.XPATH, "(//*[@ tabindex='0'])[6]") preferredLanguage.click() time.sleep(1) optionInPreferredLanguage = self.driver.find_element( By.XPATH, "//*[@id='liId_Hindi']") optionInPreferredLanguage.click() print("Hindi Selected") time.sleep(2) nomineeFill = self.driver.find_element(By.XPATH, "//*[@name='nomineeName']") nomineeFill.send_keys("Nominee") calendarNomineeFill = self.driver.find_element( By.XPATH, "//*[@name='nomineeDateOfBirth']") calendarNomineeFill.click() yearNomineeDropdown = self.driver.find_element( By.XPATH, "//*[@class='react-datepicker__year-select']") yearNomineeSel = Select(yearNomineeDropdown) yearNomineeSel.select_by_value('1985') monthNomineeDropdown = self.driver.find_element( By.XPATH, "//*[@class='react-datepicker__month-select']") monthNomineeSel = Select(monthNomineeDropdown) monthNomineeSel.select_by_value('3') dateNomineeSel = self.driver.find_element(By.XPATH, "//*[@aria-label='day-10']") dateNomineeSel.click() genderSelected = self.driver.find_element( By.XPATH, "//*[contains(text(),'Male')]") genderSelected.click() print("Gender Clicked") relationshipProposer = self.driver.find_element( By.XPATH, "(//*[@ tabindex='0'])[8]") relationshipProposer.click() time.sleep(1) optionInRelationshipProposer = self.driver.find_element( By.XPATH, "//*[@id ='liId_Brother']") optionInRelationshipProposer.click() print("Relationship Brother Selected.") childName = self.driver.find_element(By.XPATH, "//*[@name='nomineeChildName']") childName.send_keys("Chintu Kumar") time.sleep(1) childcalendarNomineeFill = self.driver.find_element( By.XPATH, "//*[@name='nomineeChildDob']") childcalendarNomineeFill.click() time.sleep(1) childyearNomineeDropdown = self.driver.find_element( By.XPATH, "//*[@class='react-datepicker__year-select']") childyearNomineeSel = Select(childyearNomineeDropdown) childyearNomineeSel.select_by_value('2011') childmonthNomineeDropdown = self.driver.find_element( By.XPATH, "//*[@class='react-datepicker__month-select']") childmonthNomineeSel = Select(childmonthNomineeDropdown) childmonthNomineeSel.select_by_value('11') childdateNomineeSel = self.driver.find_element( By.XPATH, "//*[@aria-label='day-22']") childdateNomineeSel.click() time.sleep(1) bankFill = self.driver.find_element(By.XPATH, "//*[@name='bankAccountNo']") bankFill.send_keys("99999999999999") nameOfAccount = self.driver.find_element( By.XPATH, "//*[@name='bankAccountHolderName']") nameOfAccount.send_keys("NameName") nameOfIFSCcode = self.driver.find_element( By.XPATH, "//*[@name='bankAccountIFSC']") nameOfIFSCcode.send_keys("SBIN0000845") codeMICR = self.driver.find_element(By.XPATH, "//*[@name='bankAccountMICR']") codeMICR.send_keys("515002206") time.sleep(3) accountType = self.driver.find_element(By.XPATH, "(//*[@tabindex='0'])[10]") accountType.click() time.sleep(2) accountTypeSelect = self.driver.find_element( By.XPATH, "//*[contains(text(), 'Savings')]") accountTypeSelect.click() print("Account Type Selected.") time.sleep(2) calBankAcOpening = self.driver.find_element( By.XPATH, "//*[@name='bankAccOpeningDate']") calBankAcOpening.click() calDateSelect = self.driver.find_element(By.XPATH, "//*[@aria-label='day-3']") calDateSelect.click() btnProceedOnPage3 = self.driver.find_element( By.XPATH, "//*[contains(text(),'Proceed')]") btnProceedOnPage3.click() time.sleep(5)
from selenium.webdriver.support import expected_conditions as EC from selenium.webdriver.support.wait import WebDriverWait from selenium.webdriver.common.action_chains import ActionChains from selenium.common.exceptions import TimeoutException from selenium.common.exceptions import StaleElementReferenceException from selenium.common.exceptions import ElementNotInteractableException import time from decouple import config driver = webdriver.Chrome('chromedriver') driver.get("https://www.ea.com/fr-fr/fifa/ultimate-team/web-app/") # LOGIN login = WebDriverWait(driver, 30).until( EC.element_to_be_clickable( (By.XPATH, '//*[@id="Login"]/div/div/button[1]'))) login.click() email = driver.find_element_by_id("email") email.send_keys(config("EMAIL_EA")) pwd = driver.find_element_by_id("password") pwd.send_keys(config("PWD_EA")) driver.find_element_by_id("btnLogin").click() driver.find_element_by_id("btnSendCode").click() # MARKET time.sleep(60) driver.find_element_by_xpath("/html/body/main/section/nav/button[3]").click() time.sleep(5) driver.find_element_by_xpath( "/html/body/main/section/section/div[2]/div/div/div[2]").click() time.sleep(1)
def search(): try: broswer.set_window_size(900, 900) broswer.get("http://csujwc.its.csu.edu.cn/jsxsd/kscj/yscjcx_list") account = wait.until( EC.presence_of_element_located((By.CSS_SELECTOR, "#userAccount"))) password = wait.until( EC.presence_of_element_located((By.CSS_SELECTOR, "#userPassword"))) submit = wait.until( EC.element_to_be_clickable((By.CSS_SELECTOR, "#btnSubmit"))) except TimeoutException: return search() #登录 account.send_keys("0902170314") password.send_keys("XXXXX") submit.click() #进入我的成绩界面 my_score = wait.until( EC.presence_of_element_located( (By.CSS_SELECTOR, "body > div.Nsb_menu_pw > div > div > ul > li:nth-child(4)"))) my_score.click() #成绩和平均分 # my_rank = wait.until( # EC.presence_of_element_located((By.CSS_SELECTOR, "#LeftMenu1_divChildMenu > ul > li:nth-child(4) > a")) # ) # my_rank.click() # # rank = wait.until( # EC.presence_of_element_located((By.CSS_SELECTOR, "#dataList > tbody > tr:nth-child(2) > td:nth-child(3)")) # ) # #http://www.w3school.com.cn/cssref/selector_nth-child.asp nth-child(n)的用法 # average_score = wait.until( # EC.presence_of_element_located((By.CSS_SELECTOR, "#dataList > tbody > tr:nth-child(2) > td:nth-child(4)")) # ) # # print('您的平均成绩是:'+average_score.text+"\n排名:"+rank.text) #逐次展示 我的成绩八个子项 # css_selector = "#LeftMenu1_divChildMenu > ul > li:nth-child({0}) > a" # for i in range(8): # # 将滚动条移动到页面的顶部 # js = "var q=document.documentElement.scrollTop=0" # broswer.execute_script(js) # time.sleep(2) # # aviable_score = wait.until( # EC.presence_of_element_located((By.CSS_SELECTOR, css_selector.format(str(i+1)))) # ) # aviable_score.click() # # # #将滚动条移动到页面的底部 # for j in range(8): # js="var q=document.documentElement.scrollTop="+str(j*200) # broswer.execute_script(js) # time.sleep(1) #处理select https://www.cnblogs.com/imyalost/p/7846653.html yxcj = wait.until( EC.element_to_be_clickable( (By.CSS_SELECTOR, "#LeftMenu1_divChildMenu > ul > li:nth-child(1) > a"))) select_score_element = broswer.find_element_by_css_selector("#xnxq01id") select_score = Select(select_score_element) #得到下拉列表的所有子项 select_score_items = broswer.find_elements_by_css_selector( "#xnxq01id option") select_score_items_text = [] for item in select_score_items: select_score_items_text.append(item.text) print(item.text) scores_dic = {} for i in range(1): #不加这两行会报错,原因: https://blog.csdn.net/ulebo/article/details/52128033 print("*****************************************************" + select_score_items_text[i] + "*****************************************************") select_score_element = broswer.find_element_by_css_selector( "#xnxq01id") select_score = Select(select_score_element) select_score.select_by_index(i) time.sleep(1) score_table = broswer.find_element_by_css_selector("#dataList") data = score_table.text.replace("+", "") data = data.split("\n") datalist = [] for line in data: datalist.append(line.split()) print(line.split()) scores_dic[select_score_items_text[i]] = datalist return scores_dic[select_score_items_text[0]]
def _on_demand_result(self): ON_DEMAND_CHUNKS = 2 row_id_to_find = config.ON_DEMAND_RECORD_COUNT * ON_DEMAND_CHUNKS query = """-- On demand query result on scroll -- Grid select all -- Column select all SELECT generate_series(1, {}) as id1, 'dummy' as id2""".format( config.ON_DEMAND_RECORD_COUNT * ON_DEMAND_CHUNKS) print("\nOn demand result set on scrolling... ", file=sys.stderr, end="") self.page.execute_query(query) # wait for header of the table to be visible self.wait.until( EC.visibility_of_element_located( (By.CSS_SELECTOR, QueryToolLocators.query_output_canvas_css))) self.wait.until( EC.presence_of_element_located( (By.CSS_SELECTOR, QueryToolLocators.query_output_cells))) self.page.find_by_css_selector( QueryToolLocators.query_output_canvas_css) self._check_ondemand_result(row_id_to_find) print("OK.", file=sys.stderr) print("On demand result set on grid select all... ", file=sys.stderr, end="") self.page.click_execute_query_button() # wait for header of the table to be visible self.page.find_by_css_selector( QueryToolLocators.query_output_canvas_css) # wait for the rows in the table to be displayed self.wait.until( EC.presence_of_element_located( (By.CSS_SELECTOR, QueryToolLocators.query_output_cells))) # Select all rows in a table multiple_check = True while multiple_check: try: select_all = self.wait.until( EC.element_to_be_clickable( (By.XPATH, QueryToolLocators.select_all_column))) select_all.click() multiple_check = False except (StaleElementReferenceException, ElementClickInterceptedException): pass self._check_ondemand_result(row_id_to_find) print("OK.", file=sys.stderr) print("On demand result set on column select all... ", file=sys.stderr, end="") self.page.click_execute_query_button() self.page.wait_for_query_tool_loading_indicator_to_disappear() # wait for header of the table to be visible self.wait.until( EC.visibility_of_element_located( (By.CSS_SELECTOR, QueryToolLocators.query_output_canvas_css))) # wait for the rows in the table to be displayed self.wait.until( EC.presence_of_element_located( (By.CSS_SELECTOR, QueryToolLocators.query_output_cells))) self.wait.until( EC.presence_of_element_located( (By.CSS_SELECTOR, QueryToolLocators.query_output_canvas_css))) self._check_ondemand_result(row_id_to_find) print("OK.", file=sys.stderr)
then = time.time() driver = webdriver.Firefox() wait = WebDriverWait(driver, 20) login = '******' password = '******' driver.get("https://www.sagemember.com") assert "SAGEmember.com" in driver.title elem = driver.find_element_by_class_name("form-control") elem.send_keys(login) elem = driver.find_element_by_id("password") elem.send_keys(password) elem.send_keys(Keys.RETURN) wait.until(EC.element_to_be_clickable((By.LINK_TEXT, "More information"))) driver.find_element_by_xpath("//ul[@id='side-menu']/li[2]/a").click() wait.until(EC.frame_to_be_available_and_switch_to_it('ContentFrame')) driver.find_element_by_xpath( "//table[@id='coStoreList']/tbody/tr[2]/td[7]/form/a").click() driver.switch_to.default_content() wait.until(EC.element_to_be_clickable((By.LINK_TEXT, "Clients"))) driver.find_element_by_xpath("//ul[@id='side-menu']/li[4]/ul/li[5]/a").click() wait.until(EC.frame_to_be_available_and_switch_to_it('ContentFrame')) x = 4000 while (x > 1):