Esempio n. 1
0
 def test_login_s(self, user_phone, password, is_true):
     """判断登录成功方法"""
     logging.info('输入账号:{},输入密码:{}'.format(user_phone, password))
     # 调用登录方法
     PageFactory.get_n_login().login_operation(user_phone, password)
     # 判断登录是否成功
     if is_true:
         try:
             # 查找用户名
             Base().search_ele(PageElements.user_name)
         except:
             print('\n登录失败')
             # 添加截图
             allure.attach(Base.driver.get_screenshot_as_png(), "截图",
                           allure.attachment_type.PNG)
             assert False
         else:
             print('\n登录成功')
             assert True
             self.dc()
     else:
         # 判断登录是否成功
         try:
             # 查找用户名
             Base().search_ele(PageElements.user_name)
         except:
             print('\n登录失败')
             PageFactory.get_n_login().click_close_login()
             assert True
         else:
             print('\n登录成功')
             # 添加截图
             allure.attach(Base.driver.get_screenshot_as_png(), "截图",
                           allure.attachment_type.PNG)
             assert False
Esempio n. 2
0
class LoginPage:
    def __init__(self, driver):
        self.driver = driver
        self.base_obj = Base(self.driver)

    def login_input(self, text):
        self.base_obj.ele_input(page.s_1, text)
Esempio n. 3
0
    def setup_class(self):
        """声明driver"""
        # server 启动参数
        desired_caps = {
            'platformName': 'Android',
            'platformVersion': '5.1',
            'deviceName': 'sanxing',
            'appPackage': 'com.android.settings',
            'appActivity': '.Settings'
        }

        # 声明我们的driver对象
        self.driver = webdriver.Remote('http://127.0.0.1:4723/wd/hub', desired_caps)
        # 实例化Base类
        self.base_obj = Base()

        # 页面元素
        # 搜索按钮
        self.search_btn_id = (By.ID, "com.android.settings:id/search")

        # 搜索输入框
        self.search_input_id = (By.ID, "android:id/search_src_text")

        # 搜索结果
        self.search_result_ids = (By.ID, "com.android.settings:id/title")
Esempio n. 4
0
class SearchPage:
    def __init__(self, driver):
        # 实例化Base类
        self.base_obj = Base(driver)
        """页面元素"""
        # 搜索按钮
        self.search_btn = (By.ID, "com.android.settings:id/search")
        # 输入框
        self.search_input = (By.ID, "android:id/search_src_text")
        # 搜索结果
        self.search_result = (By.ID, "com.android.settings:id/title")

    def click_search_btn(self):
        """点击搜索按钮"""
        self.base_obj.click_ele(self.search_btn)

    def send_search_text(self, text):
        """
        输入搜索内容
        :param text: 需要输入的搜索内容
        :return:
        """
        self.base_obj.send_ele(self.search_input, text)

    def get_search_result(self):
        """获取搜索结果"""
        # 返回定位对象列表目的??[对象1, 对象2.....] -> [对象1文本,对象2文本....]
        results = self.base_obj.search_eles(self.search_result)
        return [i.text for i in results]
Esempio n. 5
0
class PageWeibo:

    def __init__(self, driver):
        self.driver = driver
        self.base_obj = Base(self.driver)

    def weibo_login(self,text):
        self.base_obj.ele_input(page.w_1,text)
Esempio n. 6
0
class Page_1:
    def __init__(self, driver):
        self.driver = driver
        self.obj = Base(self.driver)

    def search_click(self):
        self.obj.ele_click(page.s_1)

    def search_input(self, text):
        self.obj.ele_input(page.s_2, text)
Esempio n. 7
0
 def __init__(self, driver):
     # 实例化Base类
     self.base_obj = Base(driver)
     """页面元素"""
     # 搜索按钮
     self.search_btn = (By.ID, "com.android.settings:id/search")
     # 输入框
     self.search_input = (By.ID, "android:id/search_src_text")
     # 搜索结果
     self.search_result = (By.ID, "com.android.settings:id/title")
Esempio n. 8
0
class Test_Search:
    def setup_class(self):
        """声明driver"""
        # server 启动参数
        desired_caps = {
            'platformName': 'Android',
            'platformVersion': '5.1',
            'deviceName': 'sanxing',
            'appPackage': 'com.android.settings',
            'appActivity': '.Settings'
        }

        # 声明我们的driver对象
        self.driver = webdriver.Remote('http://127.0.0.1:4723/wd/hub',
                                       desired_caps)
        # 实例化Base类
        self.base_obj = Base(self.driver)

        # 页面元素
        # 搜索按钮
        self.search_btn_id = (By.ID, "com.android.settings:id/search")
        # 搜索输入框
        self.search_input_id = (By.ID, "android:id/search_src_text")
        # 搜索结果
        self.search_result_ids = (By.ID, "com.android.settings:id/title")

    def teardown_class(self):
        """退出driver"""
        self.driver.quit()

    # 因为只需要运行一次 并且是依赖方法,所以使用fixture工厂函数
    @pytest.fixture(scope="class", autouse=True)
    def click_search_btn(self):
        """点击搜索按钮 并且 点击一次"""
        self.base_obj.click_ele(self.search_btn_id)

    @pytest.mark.parametrize("search_data, exp_data", [("1", "休眠"),
                                                       ("i", "IP地址"),
                                                       ("m", "MAC地址")])
    def test_search_text(self, search_data, exp_data):
        """
        搜索测试方法
        :param search_data: 输入内容
        :param exp_data: 预期结果
        :return:
        """
        # 输入框输入内容
        self.base_obj.send_ele(self.search_input_id, search_data)
        # 获取结果
        results = self.base_obj.search_eles(self.search_result_ids)
        # 断言
        assert exp_data in [i.text for i in results]
Esempio n. 9
0
 def test_login_success(self):
     try:
         driver = self.driver
         self.login_attempt(self.df.loc[0, "mobile_email"],
                            self.df.loc[0, "password"])
         home = HomePage(driver)  # Homepage object
         name = self.df.loc[0, "firstname"] + " " + self.df.loc[0,
                                                                "lastname"]
         Base.take_screenshot(self)
         assert home.get_bookmark_icon_text() == name
     except Exception as e:
         # Allure screenshot for the test
         allure.attach(driver.get_screenshot_as_png(),
                       name='screenshot',
                       attachment_type=allure.attachment_type.PNG)
         raise
         print("Title is wrong", format(e))
Esempio n. 10
0
 def close_update_btn(self):
     """关闭更新提示"""
     logging.info("判断,关闭更新提示")
     try:
         # 查找“更新提示”
         Base().search_ele(PageElements.close_update)
     except:
         pass
     else:
         # 点击“x”
         self.click_close_update()
Esempio n. 11
0
 def setup_class(self):
     """判断登录退出方法"""
     try:
         # 查找“更新提示”
         Base().search_ele(PageElements.close_update)
     except:
         pass
     else:
         # 点击“x”
         PageFactory.get_home().click_close_update()
     finally:
         # 点击“我”
         PageFactory.get_home().click_user_navigation()
Esempio n. 12
0
class Register():
    def __init__(self, driver):
        self.base = Base(driver)
        self.read_config = ReadConfig(
            r'F:\xw\example\web_projrct\Config\el.ini', 'Register')
        self.getcode = GetCode(driver)


#注册

    def register(self, email, user, password):

        register_email = self.read_config.get_value('register_email')
        register_name = self.read_config.get_value('register_name')
        register_password = self.read_config.get_value('register_password')
        register_input_code = self.read_config.get_value('register_input_code')
        register_get_code = self.read_config.get_value('register_get_code')
        register_btn = self.read_config.get_value('register_btn')
        self.base.element_input(register_email, email)
        self.base.element_input(register_name, user)
        self.base.element_input(register_password, password)
        code = self.getcode.get_code(register_get_code)
        self.base.element_input(register_input_code, code)
        self.base.element_click(register_btn)
Esempio n. 13
0
 def setUpClass(cls):
     cls.log=Log()
     cls.driver=InitDriver()
     cls.base=Base(cls.driver)
     cls.register=Register(cls.driver)
     read_config=ReadConfig(r'F:\xw\example\web_projrct\Config\platform.ini','URL')
     reigster_url=read_config.get_value('register_url')
     try:
         cls.log.info('开始注册测试')
         cls.log.info('开始打开注册网页')
         cls.driver.get(reigster_url)
         cls.driver.implicitly_wait(30)
         cls.log.info('打开注册网页成功')
     except Exception as e:
         cls.log.info('打开注册网页失败')
         raise e
Esempio n. 14
0
 def dc(self):
     """判断登出方法"""
     # 点击设置
     PageFactory.get_y_login().click_setting_btn()
     # 调用登出操作
     PageFactory.get_setting().log_out_operation()
     # 点击“我”
     PageFactory.get_home().click_user_navigation()
     # 判断登出是否成功
     try:
         # 查找“已有账号,去登录”
         Base().search_ele(PageElements.go_to_login)
     except:
         print('\n登出失败')
     else:
         print('\n登出成功')
Esempio n. 15
0
 def test_login(self, user_phone, password):
     """判断登录成功方法"""
     # 点击“去登录”
     PageFactory.get_go_to_login().click_go_to_login()
     # 调用登录方法
     PageFactory.get_n_login().login_operation(user_phone, password)
     # 判断登录是否成功
     try:
         # 查找用户名
         Base().search_ele(PageElements.user_name)
     except:
         print('\n登录失败')
         assert False
     else:
         print('\n登录成功')
         assert True
         self.dc()
Esempio n. 16
0
 def test_login(self, user_phone, password):
     """判断登录成功方法"""
     # 输入手机号
     PageFactory.get_n_login().send_phone(user_phone)
     # 输入密码
     PageFactory.get_n_login().send_password(password)
     # 点击登录
     PageFactory.get_n_login().click_login_btn()
     # 判断登录是否成功
     try:
         # 查找用户名
         Base().search_ele(PageElements.user_name)
     except:
         print('\n登录失败')
         assert True
     else:
         print('\n登录成功')
         assert False
Esempio n. 17
0
class Login():
    def __init__(self, driver):
        self.read_config = ReadConfig(
            r'F:\xw\example\web_projrct\Config\el.ini', 'Login')
        self.base = Base(driver)

    def login(self, name, password):
        login_name = self.read_config.get_value('login_name')
        login_password = self.read_config.get_value('login_password')
        login_btn = self.read_config.get_value('login_btn')
        self.base.element_input(login_name, name)
        self.base.element_input(login_password, password)
        self.base.element_click(login_btn)
Esempio n. 18
0
class GetCode():
    def __init__(self,driver,filename=None):
        self.driver=driver
        if filename:
            self.filename=filename
        else:
            self.filename=r'F:\xw\example\web_projrct\Config\code.png'
    #获取验证码元素
    def get_code_el(self,loc):
        self.base = Base(self.driver)
        el=self.base.find_element(loc)
        return el
    #获取验证码并保存在filename中
    def get_code_image(self,loc):
        self.driver.save_screenshot(self.filename)
        #验证码尺寸
        size=self.get_code_el(loc).size
        width=size['width']
        height=size['height']
        #验证码坐标
        location=self.get_code_el(loc).location
        left=location['x']
        top=location['y']
        right=left+width
        bottom=top+height
        im=Image.open(self.filename)
        #按坐标裁剪,图形内只剩验证码
        im=im.crop((left,top,right,bottom))
        im.save(self.filename)
        return self.filename
    #解析验证码
    def get_code(self,loc):
        filename=self.get_code_image(loc)
        image=Image.open(filename)
        #验证码的图片模式为RGBA,是无法分配调色盘给透明通道的。更换为RGB模式
        image = image.convert('RGB')
        text=pytesseract.image_to_string(image)
        return text
Esempio n. 19
0
 def __init__(self, driver):
     Base.__init__(self, driver)
Esempio n. 20
0
 def __init__(self):
     Base.__init__(self, 'mp')
Esempio n. 21
0
 def __init__(self):
     self.browser = Base.browser()
Esempio n. 22
0
 def __init__(self):
     # 实例化Base类
     Base.__init__(self)
Esempio n. 23
0
 def __init__(self, driver):
     self.base = Base(driver)
     self.read_config = ReadConfig(
         r'F:\xw\example\web_projrct\Config\el.ini', 'Register')
     self.getcode = GetCode(driver)
 def setUp(self):
     Base.browser().get(config_url())
     Base.browser().maximize_window()
     Base.browser().implicitly_wait(10)
     self.searchPage = SearchPage()
Esempio n. 25
0
 def __init__(self, driver):
     self.driver = driver
     self.base_obj = Base(self.driver)
Esempio n. 26
0
 def __init__(self, driver):
     Base.__init__(self, driver)
     self.page_elements = PageElements()
Esempio n. 27
0
 def __init__(self):
     Base.__init__(self, 'app')
Esempio n. 28
0
 def get_code_el(self,loc):
     self.base = Base(self.driver)
     el=self.base.find_element(loc)
     return el
Esempio n. 29
0
 def __init__(self):
     Base.__init__(self, 'mis')
 def tearDown(self):
     Base.browser().quit()