def test_04(self): see_located = self.fd.get_located('SeeResult', 'Node4', 'practice_element.ini') enter_here = self.fd.get_element('EnterHere', 'Node4', 'practice_element.ini') check_submit = self.fd.get_element('CheckSubmit', 'Node4', 'practice_element.ini') submit = self.fd.get_element('Submit', 'Node4', 'practice_element.ini') keyup = self.fd.get_element('KeyUp', 'Node4', 'practice_element.ini') keypress = self.fd.get_element('KeyPress', 'Node4', 'practice_element.ini') if WD(self.driver, 10).until(EC.visibility_of_element_located(see_located), '有效时间内没有进入页面'): AC(self.driver).send_keys_to_element( enter_here, '大家好').send_keys_to_element(check_submit, 'qiehuan').click(submit).perform() time.sleep(2) AC(self.driver).key_down( Keys.CONTROL, enter_here).send_keys('a').key_up(Keys.CONTROL).send_keys( Keys.BACKSPACE).send_keys('new').perform() if WD(self.driver, 10).until(EC.visibility_of(keyup)): AC(self.driver).click(keyup).send_keys(Keys.DOWN, Keys.DOWN, Keys.ENTER).perform() time.sleep(2) result = keypress.is_selected() self.assertTrue(result) time.sleep(2)
def simuMove(self, slider, track): act = AC(self.driver) onElem = act.click_and_hold(slider).perform() for x in track: print(x) act.move_by_offset(x, 0).perform() act = AC(self.driver) sleep(.3) sleep(.5) act.release().perform()
def __init__(self): self.driver = webdriver.Chrome(ChromeDriverManager().install()) self.driver.get("https://sitminte.maxlifeinsurance.com/mSalesTest/") self.driver.maximize_window() self.driver.implicitly_wait(5000) self.wait = WebDriverWait(self.driver, 5000) action = AC(self.driver)
def entry_key(self,word,WPM): word_list=list(word) sec=60/(WPM*5) print(sec) for wl in word_list : AC(self.run).send_keys(wl).perform() time.sleep(sec)
def is_check_send_message(self): u'''短信发送检验''' try: WebDriverWait(self.browser, 10, 1).until( lambda x: x.find_element_by_id("send-message").is_displayed()) send_message = self.browser.find_element_by_id("send-message") AC(self.browser).click(send_message).perform() time.sleep(0.5) send_result = self.browser.find_element_by_class_name( "layui-layer-content").text text = "发送成功" self.assertEqual(text, send_result, msg="失败原因:%s != %s" % (text, send_result)) print('%s\t方法名:%s\t短信发送:%s' % (send_time, sys._getframe().f_code.co_name, send_result)) logger_message.loginfo( '%s\t方法名:%s\t短信发送:%s' % (send_time, sys._getframe().f_code.co_name, send_result)) except Exception as send_message_msg: Screenshot(self, u'短信推送异常') print(u"%s\t方法名:%s\t短信推送异常:%s" % ( send_time, sys._getframe().f_code.co_name, send_message_msg, )) logger_message.logwarning(u"%s\t方法名:%s\t短信推送异常:%s" % ( send_time, sys._getframe().f_code.co_name, send_message_msg, ))
def __init__(self): self.driver = webdriver.Chrome(ChromeDriverManager().install()) self.driver.get("https://mprouat.maxlifeinsurance.com/") self.driver.maximize_window() self.driver.implicitly_wait(60) self.wait = WebDriverWait(self.driver, 60) action = AC(self.driver)
def mouse_click(self, element1): """ This is used to move to the element on the webpage and click the element :param element1: arg1 and the webelement :return: Nothing """ AC(self.driver).move_to_element(element1).click(element1).perform() return None
def mouse_hover(self): """ Move to the specified element. """ if self.existed: try: AC(self.driver).move_to_element(self.find_element).perform() except NoSuchElementException as e: return e.format()
def test_Drag_Drop(self): """This is used to test the drag and drop""" AC(self.driver).drag_and_drop(self.driver.find_element(By.ID,"draggable"),self.driver.find_element(By.ID,'droppable')).perform() time.sleep(1) filename = "E:\\Training_Projects\\Selenium_With_Unittest\\drag_drop.png" try: self.driver.save_screenshot(filename) except NotADirectoryError: print('Could not Take the Screen Shot')
def check_link_africa(self, browser): search_button_world = self.browser.find_element( *WSJPageLocators.SEARCH_BUTTON_WORLD) button_world = AC(browser).move_to_element( search_button_world).perform() search_button_africa = self.browser.find_element( *WSJPageLocators.SEARCH_BUTTON_AFRICA) search_button_africa.click() assert "africa-news" in self.browser.current_url
def move_to_gap(self, slider, track): ''' 拖动滑块 :param slider: :param track: :return: ''' #保持鼠标点击动作 AC(self.brower).click_and_hold(slider).perform() while track: x = random.choice(track) #移动 AC(self.brower).move_by_offset(xoffset=x, yoffset=0).perform() #删除track中的坐标元素 track.remove(x) time.sleep(0.5) #释放鼠标 AC(self.brower).release().perform()
def test_draganddrop(self): self.dd._BG_broswerLanunch( broswerType='chrome', url='https://www.w3schools.com/html/html5_draganddrop.asp') s = self.dd._BG_getElement( locator="//div[@id='div1']//img[@id='drag1']", locatorType='xpath') target = self.dd._BG_getElement(locator="//div[@id='div2']", locatorType='xpath') action = AC(self.dd.browser) action.drag_and_drop_by_offset(source=s, xoffset=202, yoffset=427)
def test_mouse_actions(self): """ This is used to test the mouse actions :return: Nothing """ self.driver.get(self.base_url) self.driver.switch_to.frame(self.driver.find_element_by_xpath("//iframe[@src='/resources/demos/droppable/default.html']")) drag_element = self.driver.find_element_by_id("draggable") drop_element = self.driver.find_element_by_id("droppable") AC(self.driver).drag_and_drop(drag_element,drop_element).perform() time.sleep(3)
def move_by_offset(self, xoffset, yoffset): """ Move the element by clicking and dragging to the specified x and y coordinates :param xoffset: X offset in pixels to move the mouse. :param yoffset: Y offset in pixels to move the mouse. :return: None """ move = AC(self.driver) element = self.get_element() move.click_and_hold(element).move_by_offset( xoffset, yoffset).release().perform()
def hover_element(self, loc, model=None): #查找元素 ele = self.get_Element(loc, model) #鼠标悬浮在元素 logging.info("{0}:元素:{1}鼠标悬停事件".format(model, loc)) try: AC(self.driver).move_to_element(ele).perform() except: logging.error("鼠标悬停操作失败。") # 截图 self.save_webImgs(model) raise
def test_slider(self): """This is used to test the slider""" self.driver.switch_to.frame( self.driver.find_element(By.CLASS_NAME, "demo-frame")) element1 = self.driver.find_element(By.ID, "slider") try: AC(self.driver).drag_and_drop_by_offset(element1, 100, 0).perform() time.sleep(2) filename = 'E:\\Training_Projects\\Selenium_With_Unittest\\Slider.png' self.driver.save_screenshot(filename) except NotADirectoryError: print('Could not Drag')
def test_02(self): find_dragme = self.fd.get_element('dragme', 'Node2', 'practice_element.ini') find_ltem1 = self.fd.get_element('ltem1', 'Node2', 'practice_element.ini') find_ltem4 = self.fd.get_element('ltem4', 'Node2', 'practice_element.ini') locator_ltem1 = self.fd.get_located('ltem1', 'Node2', 'practice_element.ini') if WD(self.driver, 10).until(EC.title_is('Mootools Drag and Drop Example')): if WD(self.driver, 10).until(EC.visibility_of_element_located(locator_ltem1)): AC(self.driver).drag_and_drop(find_dragme, find_ltem1).perform() time.sleep(2) AC(self.driver).drag_and_drop(find_dragme, find_ltem4).perform() time.sleep(2) text = WD(self.driver, 5).until( EC.text_to_be_present_in_element(locator_ltem1, 'dropped')) self.assertTrue(text, '用例失败')
def apply_filter(browser): try: #Find more in the filter menu, perform ActionChain and click filter_menu = browser.find_element_by_css_selector( '#DKFilters div.selectContainer .filter') more_elem = browser.find_element_by_css_selector('#DKFilters .more') AC(browser).move_to_element(filter_menu).click(more_elem).perform() #Find 'All Company Ratings', click 4 stars then apply flyout_menu = browser.find_element_by_css_selector( '.moreFlyout .header .label') comp_rate = browser.find_element_by_xpath( '//*[text()[contains(.,"All Company Ratings")]]') AC(browser).move_to_element(flyout_menu).click(comp_rate).perform() stars = browser.find_element_by_xpath( '//*[@id="DKFilters"]/div/div/div[5]/div/div[4]/span[1]/i[4]/i') stars.click() apply_btn = browser.find_element_by_xpath( '//*[@id="DKFilters"]/div/div/div[5]/div/div[1]/button') apply_btn.click() except: print('Filter element not found')
def test_01(self): if WD(self.driver, 10).until( EC.text_to_be_present_in_element( self.fd.get_located('check', 'Node1', 'practice_element.ini'), 'Prompt Test')): print('True') AC(self.driver).click( self.fd.get_element('click', 'Node1', 'practice_element.ini')).perform() time.sleep(2) if WD(self.driver, 5).until(EC.alert_is_present()): AL(self.driver).send_keys('sahai test') time.sleep(1) AL(self.driver).accept() if WD(self.driver, 5).until( EC.element_to_be_clickable( self.fd.get_located('prompt_by', 'Node1', 'practice_element.ini'))): AC(self.driver).click( self.fd.get_element('back', 'Node1', 'practice_element.ini')).perform() wu = WD(self.driver, 5).until(EC.title_is('Sahi Tests')) self.assertTrue(wu)
def move_to_element(self, locator): """ 鼠标悬停操作 Usage: locator = ("id", "xxx") driver.move_to_element(\locator) :param locator: :return: """ try: element = self.findElement(locator) except TimeoutException: print("element not found") else: AC(self.driver).move_to_element(element).perform()
def setUp(self): if self.headless and self.browser != "PhantomJS": disp_var = os.environ['DISPLAY'] import pyvirtualdisplay if self.visible: self.display = pyvirtualdisplay.Display(visible=1) else: self.display = pyvirtualdisplay.Display() self.display.start() if self.browser == "PhantomJS": self.driver = webdriver.PhantomJS() self.driver.set_window_size(1120, 550) elif self.browser == "Chrome": options = webdriver.ChromeOptions() options.add_experimental_option( "prefs", {"download.default_directory": os.getcwd()}) self.driver = webdriver.Chrome(chrome_options=options) elif self.browser == "Firefox": profile = webdriver.FirefoxProfile() profile.set_preference("browser.download.folderList", 2) profile.set_preference("browser.download.manager.showWhenStarting", False) profile.set_preference("browser.download.dir", os.getcwd()) profile.set_preference("browser.helperApps.neverAsk.saveToDisk", 'text/csv') self.driver = webdriver.Firefox(firefox_profile=profile) else: self.driver = getattr(webdriver, self.browser)() if self.headless and self.browser != "PhantomJS": os.environ['DISPLAY'] = disp_var self.driver.get(self.url) self.actions = AC(self.driver) self.sqlshare_login()
def start_search(browser, job, location): try: keyword_elem = browser.find_element_by_name("sc.keyword") sleep(3) keyword_elem.send_keys(job) keyword_elem.send_keys(Keys.TAB) location_elem = browser.find_element(by=By.ID, value='LocationSearch') location_elem.clear() if not location_elem.is_displayed(): try: location_elem = browser.find_elements(By.CLASS_NAME, 'loc') location_elem.clear() except: print('Not Found') sleep(3) location_elem.send_keys(location) search_elem = browser.find_element_by_class_name("gd-btn-mkt") search_elem.click() #Apply Job Filter apply_filter(browser) sleep(8) #Iterate over 5 pages of jobs on site for page_num in range(5): job_num = len(num_jobs) jobs = parse_html(browser.page_source, job_num) page_num = browser.find_element(By.CLASS_NAME, 'next') page_num.click() sleep(3) try: email_form = browser.find_element_by_xpath( '//*[@id="JAModal"]/div/div[2]') if email_form.is_displayed: escape = browser.find_element_by_xpath( '//*[@id="JAModal"]/div/div[2]/div[1]') AC(browser).move_to_element(email_form).click( escape).perform() except: print('', end='') except: print('Element not found') return jobs
def dang_nhap_gmail(trinh_duyet, email, password): xpath_email = "//input[@id='identifierId']" xpath_pass = "******" WebDriverWait(trinh_duyet, 20).until( EC.element_to_be_clickable((By.XPATH, xpath_email)) ) time.sleep(3) email = trinh_duyet.find_element_by_xpath(xpath_email) email.send_keys(email_nguoi_dung) email.send_keys(Keys.ENTER) WebDriverWait(trinh_duyet, 20).until( EC.element_to_be_clickable((By.XPATH, xpath_pass)) ) password = trinh_duyet.find_element_by_xpath(xpath_pass) password.send_keys(password_nguoi_dung) time.sleep(3) # password.send_keys(Keys.ENTER) AC(trinh_duyet).send_keys(Keys.ENTER).perform() time.sleep(3)
def getCaptchaCode(driver): ''' receive mail and get captcha ''' # switch to 10 min mail page driver.switch_to.window(driver.window_handles[0]) # wait 5 min to receive mail c = 0 r = waitEmail(driver,c) while r != True: c += 1 r = waitEmail(driver,c) # click page(200,100) to skip ads AC(driver).move_by_offset(200, 100).click().perform() # set absolute time sleep to avoid Robot check time.sleep(1) # get captcha code = driver.find_element_by_class_name('mailinhtml').text.split(':',1)[1] return driver,code
def open(self): """ 打开浏览器,输入查询内容 :return: """ self.brower.get(self.url) self.brower.maximize_window() time.sleep(3) username = self.brower.find_element_by_id('login-username') #用户名id password = self.brower.find_element_by_id('login-passwd') #密码id username.send_keys(self.username) password.send_keys(self.password) ele = self.brower.find_element_by_xpath( '//*[@class="gt_slider_knob gt_show"]') AC(self.brower).move_to_element(ele).perform()
def mock_keyboard(self, keycode, keyword): """ """ function_map = { "Control": Keys.CONTROL, "Command": Keys.COMMAND, "Alt": Keys.ALT, "Shift": Keys.SHIFT, "Space": Keys.SPACE, "Esc": Keys.ESCAPE, "Tab": Keys.TAB, "BackSpace": Keys.BACK_SPACE, "Enter": Keys.ENTER, "Delete": Keys.DELETE } if self.existed: try: AC(self.driver).key_down(function_map.get(keycode)).send_keys( keyword).key_up(function_map.get(keycode)).perform() except Exception as e: return e.format()
def is_sender_object(self): u'''发送对象信息''' try: self.browser.implicitly_wait(5) wechat_active=self.browser.find_element_by_xpath('//li[@data-channel-id="2"]') #选择微信渠道推送 time.sleep(0.5) self.browser.implicitly_wait(5) wechat_radio_group =self.browser.find_element_by_xpath('//label[@for="wechat-radio-group"]') #选择发送对象:分组 AC(self.browser).click(wechat_active).click(wechat_radio_group).perform() time.sleep(0.5) self.browser.implicitly_wait(5) wechat_send_object=self.browser.find_element_by_xpath('//span[@title="你好"]').click() #选择分组 self.browser.implicitly_wait(5) group=is_pull_down_list(self,u'张阳微信专测',".//*[@class='select2-results__option']") self. browser.implicitly_wait(10) Message_Description=self.browser.find_element_by_name("objectDescription").send_keys("推送测试") #消息描述 logger_message.loginfo(u'%s\t方法名:%s \t选择发送渠道:%s \t发送对象:%s'%(send_time,sys._getframe().f_code.co_name,wechat_active.text,wechat_radio_group.text)) except Exception as login_user_Error: Screenshot(self,u'发送对象信息-异常') logger_message.logwarning(u"%s\t方法名:%s\t发送对象信息异常:%s" %(send_time,sys._getframe().f_code.co_name,login_user_Error)) raise
def is_tab_wechat_mobel(self): u"""微信模版推送""" try: template_message=csv_search.csv_test(filename=Push_Template_path().push_template,indexs=3) type_choose=self.browser.find_element_by_xpath('//li[@data-id="5"]') #选择内容类型:模版 AC(self.browser).click(type_choose).perform() self.browser.implicitly_wait(10) template_name=self.browser.find_element_by_xpath(".//*[@id='select2-wxSel-container']").text self.browser.find_element_by_xpath('//span[@title="%s"]'%template_name).click() self.browser.implicitly_wait(5) is_pull_down_list(self,template_message[1],'//ul[@class="select2-results__options"]/li') #send_keys 移动至底 for i in range(5): self.browser.find_element_by_class_name("ps-scrollbar-y").send_keys(Keys.PAGE_DOWN) time.sleep(1) #微信模版 self.browser.find_element_by_id(template_message[8]).send_keys(template_message[9]) self.browser.find_element_by_id(template_message[10]).send_keys(template_message[11]) self.browser.find_element_by_id(template_message[12]).send_keys(template_message[13]) self.browser.find_element_by_id(template_message[14]).send_keys(template_message[15]) time.sleep(2) # self.browser.find_element_by_id("wechat-send").click() # time.sleep(1) # send_result=self.browser.find_element_by_class_name("layui-layer-content").text # text="发送成功" # self.assertEqual(text,send_result, msg="失败的原因:%s != %s" %(text,send_result)) except Exception as wechat_mobel_msg: print(wechat_mobel_msg) logger_message.logwarning(wechat_mobel_msg) raise
def che_workspace(self, driver): request_type = "che_workspace" failed = False metric = "codebases-page" try: driver.get(self.spaceUrl) target_element = self._wait_for_clickable_element(driver, By.ID, "spacehome-codebases-title") self._reset_timer() target_element.click() target_element = self._wait_for_clickable_element(driver, By.XPATH, ".//codebases-item-workspaces") self._report_success(request_type, metric, self._tick_timer()) except TimeoutException: self._report_failure(driver, request_type, metric, self._tick_timer(), "Timeout") failed = True metric = "open-window" if not failed: self._reset_timer() try: target_element.click() WebDriverWait(driver, self.timeout).until( EC.number_of_windows_to_be(2) ) driver.switch_to.window(driver.window_handles[1]) self._report_success(request_type, metric, self._tick_timer()) except TimeoutException: self._report_failure(driver, request_type, metric, self._tick_timer(), "Timeout") failed = True else: self._report_failure(driver, request_type, metric, self._tick_timer(), "Skipped") metric = "workspace-created" if not failed: self._reset_timer() try: self._wait_for_clickable_element(driver, By.XPATH, "//*[@id='gwt-debug-projectTree']//*[@name='" + self.newSpaceName.lower() + "']", timeout=self.longTimeout) self._report_success(request_type, metric, self._tick_timer()) except TimeoutException: self._report_failure(driver, request_type, metric, self._tick_timer(), "Timeout") failed = True else: self._report_failure(driver, request_type, metric, self._tick_timer(), "Skipped") metric = "terminal-maximized" if not failed: self._reset_timer() try: target_element = self._wait_for_clickable_element(driver, By.XPATH, ".//*[contains(@class,'GDPEHSMCKHC')][contains(text(),'Terminal')]") AC(driver) \ .double_click(target_element) \ .perform() target_element = self._wait_for_clickable_element(driver, By.XPATH, "//*[@id='gwt-debug-Terminal']//div[@class='terminal xterm xterm-theme-default']") self._report_success(request_type, metric, self._tick_timer()) except TimeoutException: self._report_failure(driver, request_type, metric, self._tick_timer(), "Timeout") failed = True else: self._report_failure(driver, request_type, metric, self._tick_timer(), "Skipped") metric = "maven-build" if not failed: self._reset_timer() try: AC(driver) \ .click(target_element) \ .send_keys("cd " + self.newSpaceName.lower()) \ .send_keys(Keys.RETURN) \ .send_keys("mvn clean install -Popenshift,openshift-it") \ .send_keys(Keys.RETURN) \ .perform() WebDriverWait(driver, self.longTimeout).until( EC.text_to_be_present_in_element((By.XPATH, "//*[@id='gwt-debug-Terminal']"), "Total time:") ) self._save_snapshot(driver, request_type + "_" + metric + "-screenshot-" + str(time.time())) self._report_success(request_type, metric, self._tick_timer()) except TimeoutException: self._report_failure(driver, request_type, metric, self._tick_timer(), "Timeout") failed = True else: self._report_failure(driver, request_type, metric, self._tick_timer(), "Skipped") metric = "back-to-space" if not failed: self._reset_timer() try: driver.switch_to.window(driver.window_handles[0]) self._wait_for_url(driver, self.spaceUrl) self._report_success(request_type, metric, self._tick_timer()) except TimeoutException: self._report_failure(driver, request_type, metric, self._tick_timer(), "Timeout") # failed = True else: self._report_failure(driver, request_type, metric, self._tick_timer(), "Skipped")
from selenium import webdriver as WD from selenium.webdriver.common.action_chains import ActionChains as AC # setting up driver PATH = "C:\Program Files (x86)\chromedriver.exe" driver = WD.Chrome(PATH) driver.get('https://orteil.dashnet.org/cookieclicker/') driver.implicitly_wait(10) # for initial loading click_element = driver.find_element_by_id('bigCookie') cookie_count = driver.find_element_by_id('cookies') action = AC(driver) action.click(click_element) buy_item = [ driver.find_element_by_id('productPrice' + str(i)) for i in range(1, -1, -1) ] # takes first 2 in reverse order => [100,15] for i in buy_item: print(i.text) for i in range(100): action.perform() # print(cookie_count.text) count = int(cookie_count.text.split(" ")[0]) # print(count) for j in buy_item: which_item = int(j.text)