示例#1
0
    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()
示例#2
0
 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()
示例#3
0
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
示例#4
0
文件: base.py 项目: homewayli/TPshopx
 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
示例#6
0
    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()
示例#7
0
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()
示例#9
0
 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
示例#10
0
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)
示例#13
0
    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
示例#14
0
"""
============================
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)
示例#15
0
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()
示例#16
0
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()