def test_compare_products_removal_alert(self): # get the search textbox search_field = self.driver.find_element_by_name("q") search_field.clear() # enter search keyword and submit search_field.send_keys("phones") search_field.submit() # click the Add to compare link self.driver.\ find_element_by_link_text("Add to Compare").click() # click on Remove this item link, this will display # an alert to the user self.driver.find_element_by_link_text("Clear All").click() # switch to the alert #alert = self.driver.switch_to_alert() alert = WebDriverWait(self.driver,10).until(expected_conditions.alert_is_present()) # get the text from alert alert_text = alert.text # check alert text self.assertEqual("Are you sure you would like to remove all products from your comparison?", alert_text) # click on Ok button alert.accept()
def alert(self, accept=1): t = WebDriverWait(self.driver, self._element_wait, self._element_wait_interval).until( EC.alert_is_present()) if accept: t.accept() else: t.dismiss()
def click_popup_box_ok(): try: #driver.accept() #switch_to_default() alert = WebDriverWait(driver, 10).until(EC.alert_is_present()) alert.accept() except Exception as e: raise e
def operation_alert(self, timeout=10): """处理弹窗""" alert = WebDriverWait(self.driver, timeout).until(EC.alert_is_present()) if alert: print(alert.text) alert.accept() else: return False
def adjustalertexistence(self): '''判断有没有alert,有就返回alert的text,没有就返回False''' try: a = WebDriverWait(self.driver, 5).until(EC.alert_is_present()) text = a.text a.accept() return text except Exception as e: return False
async def crawling(self, dto: StockRunCrawling) -> None: driver = None downloadObserver = None try: uuid = self.createUUID() self.logger.info("crawling", uuid) self.ee.emit(EVENT_MARCAP_CRAWLING_ON_CONNECTING_WEBDRIVER, dto) downloadObserver = DownloadObserver() path = await asyncRetryNonBlock(5, 1, downloadObserver.makePath, uuid) downloadObserver.startObserver(path, self.ee) self.logger.info("crawling", "create observer and start") print("startObserver") driver = await asyncRetryNonBlock(5, 1, self.connectWebDriver, dto.driverAddr, uuid) print("connectWebDriver") driver.get("http://data.krx.co.kr/contents/MDC/MDI/mdiLoader/index.cmd?menuId=MDC0201020101") try: alert = WebDriverWait(driver, timeout=3).until(EC.alert_is_present()) alert.accept() except Exception as e: print("예외발생:"+str(e)) print("start:"+dto.startDateStr) self.ee.emit(EVENT_MARCAP_CRAWLING_ON_START_CRAWLING, dto) WebDriverWait(driver, timeout=20, poll_frequency=1).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "#mktId_0_1"))) date = datetime.strptime(dto.startDateStr, "%Y%m%d") endDate = datetime.strptime(dto.endDateStr, "%Y%m%d") while date <= endDate: dateStr = date.strftime("%Y%m%d") downloadTask = StockCrawlingDownloadTask(**{ "dateStr": dateStr, "market": dto.market, "uuid": uuid, "taskId": dto.taskId, "taskUniqueId": dto.taskUniqueId }) self.logger.info("crawling", f"create downloadTask taskId: {dto.taskId} market: {dto.market} date: {dateStr} taskUniqueId: {dto.taskUniqueId}") print(downloadTask.json()) downloadObserver.event_handler.setDownloadTask(downloadTask) self.ee.emit(EVENT_MARCAP_CRAWLING_ON_DOWNLOAD_START, downloadTask) await asyncRetryNonBlock(5, 1, self.downloadData, downloadTask, downloadObserver, driver) # await self.downloadData(downloadTask, downloadObserver, driver) date = date + timedelta(days=1) except Exception as e: raise e finally: if downloadObserver: downloadObserver.stopObserver() if driver: driver.quit()
def run_check(json_metadata, browser): TEST_ERR_MSG = 'test failed at TID_049' assertCheckPoint(browser, 'TID_049_1', TEST_ERR_MSG) bill_page_po = restaurant_manage.bill_page.Main(browser) bill_page_po.tapCheckOutBill() alert = WebDriverWait(browser, 3).until(expected_conditions.alert_is_present()) text = alert.text alert.accept() assertCheckPoint(browser, 'TID_049_2', TEST_ERR_MSG) json_metadata['TID_049'] = 'passed'
def alert_box_testing(self): # Open Java Script Alert Box self.driver.find_element(By.XPATH, self.jscript_alert_box_btn_xpath).click() alert_box = WebDriverWait(self.driver, 15).until( expected_conditions.alert_is_present()) # Verify alert box text and close the alert self.assertEqual('I am an alert box!', alert_box.text) time.sleep(1) alert_box.accept() # Back to the main window self.driver.switch_to.default_content()
def alert(self, timeout=3, Type=''): ''' 根据传入的type判断alert弹窗及操作 ''' result = WebDriverWait(self.driver, timeout, self.t).until(EC.alert_is_present()) try: if Type == '': # 判断alert是否存在,如果有,就返回alert对象 (默认) if result: return result else: print("alert不存在") return False elif Type == 'yes': # 执行alert的确定按钮 result.accept() elif Type == 'no': # 执行alert的取消按钮 result.dismiss() else: print(f"type参数 {Type} 错误,仅可为yes、no、或''") except: return False
def test_TID_helloworld(json_metadata): browser = setupLocalChrome() browser.get("http://127.0.0.1:8003/test_js_alert.html") # browser.get("https://www.cssscript.com/demo/handle-long-press-tap-event-in-javascript-long-press-js/") sleep(1) # action.long_press(ele) alert = WebDriverWait(browser, 3).until(expected_conditions.alert_is_present()) text = alert.text # action.tap_and_hold(finger_x, finger_y).release(finger_x, finger_y).perform() # action.long_press(e).perform() alert.accept() assert False, text sleep(10) return browser
def confirm_box_testing(self): # Open Java Script Confirm Box self.driver.find_element(By.XPATH, self.jscript_confirm_box_xpath).click() confirm_box = WebDriverWait(self.driver, 15).until( expected_conditions.alert_is_present()) # Verify text >>> Hit OK button self.assertTrue('Press a button!' in confirm_box.text) time.sleep(1) confirm_box.accept() # Verify the result self.driver.switch_to.default_content() self.assertEqual( 'You pressed OK!', self.driver.find_element(By.ID, self.configrm_demo_id).text) time.sleep(1) # Open alert again self.driver.find_element(By.XPATH, self.jscript_confirm_box_xpath).click() confirm_box = WebDriverWait(self.driver, 15).until( expected_conditions.alert_is_present()) # Verify text >>> Hit CANCEL button self.assertTrue('Press a button!' in confirm_box.text) time.sleep(1) confirm_box.dismiss() # Verify the result self.driver.switch_to.default_content() self.assertEqual( 'You pressed Cancel!', self.driver.find_element(By.ID, self.configrm_demo_id).text) time.sleep(1)
def prompt_box_testing(self): # Open prompt box and verify prompt text self.driver.find_element(By.XPATH, self.jscript_alert_box_prompt_xpath).click() prompt_box = WebDriverWait(self.driver, 15).until( expected_conditions.alert_is_present()) self.assertEqual('Please enter your name', prompt_box.text) time.sleep(1) # Cancel it and verify the result prompt_box.dismiss() self.driver.switch_to.default_content() self.assertEqual( '', self.driver.find_element(By.ID, self.promt_demo_id).text) time.sleep(1) # Open prompt again self.driver.switch_to.default_content() self.driver.find_element(By.XPATH, self.jscript_alert_box_prompt_xpath).click() prompt_box = WebDriverWait(self.driver, 15).until( expected_conditions.alert_is_present()) # Type name in prompt box time.sleep(1) prompt_box.send_keys('John Snow') time.sleep(1) # Accept it and verify text prompt_box.accept() self.driver.switch_to.default_content() self.assertEqual( 'You have entered \'John Snow\' !', self.driver.find_element(By.ID, self.promt_demo_id).text) time.sleep(1)
def get_login_cookie(self): retry = 0 while True: try: browser = webdriver.Chrome (self.DRIVER_PATH,options=self.chrome_options) browser.get (self.formUrl) WebDriverWait (browser, 10).until ( EC.presence_of_element_located ((By.ID, "userId")) ) browser.set_window_position (0, 0) element = browser.find_element_by_class_name ("user-login") element.click () except Exception as e: print (e) exit (1) valid_code = self.get_valid_code (browser) if (len (valid_code) < 5): print("识别到的验证码不符合要求正在重试") browser.refresh () continue try: browser.find_element_by_id ("username").send_keys (self.uid) browser.find_element_by_id ("password").send_keys (self.passwd) browser.find_element_by_id ("imageCodeName").send_keys (valid_code) browser.find_element_by_class_name ("login").click () result = WebDriverWait (browser, 5).until (EC.alert_is_present (), "没有消息框,是不是已经填好辽?") if result: result.accept () if browser.current_url == self.formUrl: break else: print ("未知错误,请检查get_login_cookie函数") else: browser.refresh () retry += 1 if retry >= self.maxretry: print("尝试次数达到最大次数,请检查验证码是否解码正确,或用户名密码是否输入正确") exit(555) except Exception as e: if browser.current_url == self.finishedUrl: print ("已经上报成功") exit (0) else: browser.refresh () retry += 1 if retry >= self.maxretry: print ("尝试次数达到最大次数,请检查验证码是否解码正确,或用户名密码是否输入正确") exit (555) # 获取cookie sufeCookies = browser.get_cookies () browser.quit () cookies = {} for item in sufeCookies: cookies[item['name']] = item['value'] cookiesJar = requests.utils.cookiejar_from_dict (cookies, cookiejar=None, overwrite=True) self.session.cookies = cookiesJar
""" ============================ Author : XiaoLei.Du Time : 2020/4/28 7:43 E-mail : [email protected] File : alert切换.py ============================ """ from selenium import webdriver from selenium.webdriver.common.by import By from selenium.webdriver.support import expected_conditions as EC from selenium.webdriver.support.wait import WebDriverWait driver = webdriver.Chrome() driver.implicitly_wait(30) driver.get(r'file:///Users/mac/web_project/switch_iframe.html') driver.find_element_by_id('hello').click() #切换到alert弹框对象 # al=driver.switch_to.alert # # alert弹框确定 # al.accept() # # # alert弹框取消 # al.dismiss() al = WebDriverWait(driver, 20).until(EC.alert_is_present()) al.accept() e = driver.find_element_by_id('hello') print(e.text)
def ui_auto_operation(): # 模拟登陆 # rep = requests.Session() browser = webdriver.Firefox() browser.implicitly_wait(10) # 设置隐性等待,等待10S加载出相关控件再执行之后的操作 browser.maximize_window() browser.get('http://www.mangoauto.com.cn/SysPages/Login.aspx') time.sleep(5) # 强制等待一般只用于测试 browser.refresh() time.sleep(5) # 输入用户名 username = browser.find_element_by_xpath('//*[@id="txtUserName"]') username.clear() username.send_keys('11*****') print('username input success') # 输入密码 browser.find_element_by_xpath('//*[@id="txtPassword"]').send_keys('11****') print('password input success') # # 加载验证码 # yzm = browser.find_element_by_xpath('/html/body/div[2]/div/div[2]/form/dl[3]/dd/input') # yzm.send_keys(input('输入验证码:')) # 点击登陆 browser.find_element_by_xpath('//*[@id="btnLogin"]').click() print('login success') # cookies = browser.get_cookies() # for cookie in cookies: # rep.cookies.set(cookie['name'], cookie['value']) # 爬取对应网页的数据 browser.current_window_handle browser.find_element_by_xpath( '/html/body/div[2]/div[1]/div[1]/div[8]/div/a/span').click() # 切换到当前窗口 browser.current_window_handle # time.sleep(5) tow_drive = browser.find_element_by_xpath( '/html/body/div[2]/div[1]/div[1]/div[8]/ul/li[5]/a') tow_drive.click() print('turn success') browser.current_window_handle # time.sleep(2) # 切换到iframe框架里面 browser.switch_to.frame( browser.find_element_by_xpath('//*[@id="mainFrame"]')) # # 输入框只读属性的修改 # js = 'document.getElementById("Text1").removeAttribute("readonly");' # browser.execute_script(js) # # 定位并且输入路径数据 # receiveStart = browser.find_element_by_xpath('//*[@id="Text1"]') # receiveStart.clear() # receiveStart.send_keys('C:\\fakepath\\5096.xls') # # receiveStart.send_keys(Keys.RETURN) # 点击上传文件按钮 browser.find_element_by_xpath('//*[@id="btn1"]').click() # 调用写好的exe实现上传 os.system("C:\\fakepath\\autoup.exe") # time.sleep(5) load = browser.find_element_by_xpath('//*[@id="btn_lead"]') load.click() try: # 每隔2s就去扫描弹出框是否存在,总时长是300s,存在就继续执行之后代码 alert = WebDriverWait(browser, 300, 2).until(EC.alert_is_present()) # 处理弹出alert框 # alert = browser.switch_to.alert alert.accept() if os.path.exists(r'C:\\fakepath\\5096.xls') is True: os.remove(r'C:\\fakepath\\5096.xls') finally: browser.close()
def explicitlyWait(): base_url = "http://www.baidu.com" driver = webdriver.Chrome() driver.implicitly_wait(5) '''隐式等待和显示等待都存在时,超时时间取二者中较大的''' driver.get(base_url) WebDriverWait(driver, 10).until(EC.title_is(u"百度一下,你就知道")) '''判断title,返回布尔值''' WebDriverWait(driver, 10).until(EC.title_contains(u"百度一下")) '''判断title,返回布尔值''' WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.ID, 'kw'))) '''判断某个元素是否被加到了dom树里,并不代表该元素一定可见,如果定位到就返回WebElement''' WebDriverWait(driver, 10).until(EC.visibility_of_element_located((By.ID, 'su'))) '''判断某个元素是否被添加到了dom里并且可见,可见代表元素可显示且宽和高都大于0''' WebDriverWait(driver, 10).until( EC.visibility_of(driver.find_element(by=By.ID, value='kw'))) '''判断元素是否可见,如果可见就返回这个元素''' WebDriverWait(driver, 10).until( EC.presence_of_all_elements_located((By.CSS_SELECTOR, '.mnav'))) '''判断是否至少有1个元素存在于dom树中,如果定位到就返回列表''' WebDriverWait(driver, 10).until( EC.visibility_of_any_elements_located((By.CSS_SELECTOR, '.mnav'))) '''判断是否至少有一个元素在页面中可见,如果定位到就返回列表''' WebDriverWait(driver, 10).until( EC.text_to_be_present_in_element((By.XPATH, "//*[@id='u1']/a[8]"), u'设置')) '''判断指定的元素中是否包含了预期的字符串,返回布尔值''' WebDriverWait(driver, 10).until( EC.text_to_be_present_in_element_value((By.CSS_SELECTOR, '#su'), u'百度一下')) '''判断指定元素的属性值中是否包含了预期的字符串,返回布尔值''' # WebDriverWait(driver,10).until(EC.frame_to_be_available_and_switch_to_it(locator)) '''判断该frame是否可以switch进去,如果可以的话,返回True并且switch进去,否则返回False''' # 注意这里并没有一个frame可以切换进去 WebDriverWait(driver, 10).until( EC.invisibility_of_element_located( (By.CSS_SELECTOR, '#swfEveryCookieWrap'))) '''判断某个元素在是否存在于dom或不可见,如果可见返回False,不可见返回这个元素''' # 注意#swfEveryCookieWrap在此页面中是一个隐藏的元素 WebDriverWait(driver, 10).until( EC.element_to_be_clickable((By.XPATH, "//*[@id='u1']/a[8]"))).click() '''判断某个元素中是否可见并且是enable的,代表可点击''' driver.find_element_by_xpath("//*[@id='wrapper']/div[6]/a[1]").click() # WebDriverWait(driver,10).until(EC.element_to_be_clickable((By.XPATH,"//*[@id='wrapper']/div[6]/a[1]"))).click() # WebDriverWait(driver,10).until(EC.staleness_of(driver.find_element(By.ID,'su'))) '''等待某个元素从dom树中移除''' # 这里没有找到合适的例子 WebDriverWait(driver, 10).until( EC.element_to_be_selected( driver.find_element(By.XPATH, "//*[@id='nr']/option[1]"))) '''判断某个元素是否被选中了,一般用在下拉列表''' WebDriverWait(driver, 10).until( EC.element_selection_state_to_be( driver.find_element(By.XPATH, "//*[@id='nr']/option[1]"), True)) '''判断某个元素的选中状态是否符合预期''' WebDriverWait(driver, 10).until( EC.element_located_selection_state_to_be( (By.XPATH, "//*[@id='nr']/option[1]"), True)) '''判断某个元素的选中状态是否符合预期''' driver.find_element_by_xpath(".//*[@id='gxszButton']/a[1]").click() instance = WebDriverWait(driver, 10).until(EC.alert_is_present()) '''判断页面上是否存在alert,如果有就切换到alert并返回alert的内容''' print instance.text instance.accept() driver.close()