韦奇_web_自动化测试实战

web_自动化测试实战

get_cookies.py

import time
import yaml
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.wait import WebDriverWait

class CookieLogin:
    def user(self):
        user = {
            'username':'韦奇',
            'english_name':'韦大奇',
            'acctid':'007',
            'mobile':'15205188888',
            'ext_tel':'400-80808080',
            'xcx_corp_address':'西安市长安大街',
            'alias':'weiqi@qq.com',
            'position':'QA',
        }
        return user

    def get_cookies(self):
        self.driver = webdriver.Chrome()
        # 1. 访问企业微信主页/登录页面
        self.driver.get("https://work.weixin.qq.com/wework_admin/frame#contacts")
        # 2. 等待20s,人工扫码操作
        time.sleep(20)
        # 3. 等成功登陆之后,再去获取cookie信息
        cookie = self.driver.get_cookies()
        # 4. 将cookie存入一个可持久存储的地方,文件
        # 打开文件的时候添加写入权限
        with open("cookie.yaml", "w") as f:
            # 第一个参数是要写入的数据
            yaml.safe_dump(cookie, f)
        self.driver.quit()

    # 自定义显示等待,按照次数轮查
    def text_find_element(self,by, element, atrempts=5):
        def __inner(driver):
            '''
            获取文本
            '''
            count = 0  # 实际循环次数
            while count < atrempts:
                try:
                    count += 1
                    text = driver.find_element(by, element).text
                    return text
                except  Exception:
                    print('出现异常啦')
            return False
        return __inner
        # 自定义显示等待,按照次数轮查

    def click_find_element(self, by, element, atrempts=5):
        def __inner(driver):
            '''
            多次点击同个按钮
            '''
            count = 0  # 实际循环次数
            while count < atrempts:
                try:
                    count += 1
                    driver.find_element(by, element).click()
                    return True
                except Exception:
                    print('出现异常啦')
            return False
        return __inner

    def click_find_elements(self,by, element, num,atrempts=5):
        def __inner(driver):
            '''
            多次点击同个按钮
            '''
            count = 0  # 实际循环次数
            while count < atrempts:
                try:
                    count += 1
                    driver.find_elements(by, element)[num].click()
                    return True
                except  Exception:
                    print('出现异常啦')
            return False
        return __inner

if __name__ == '__main__':
    cookies = CookieLogin()
    cookies.get_cookies()

test_chrome_add _yichang.py

import time
import yaml
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.wait import WebDriverWait
from 霍格沃兹魔法弗拉克.企业微信.get_cookies import CookieLogin


class Testadd(CookieLogin):
    def setup_class(self):
        self.driver = webdriver.Chrome()
        self.driver.maximize_window()
        self.driver.implicitly_wait(5)

    def teardown_class(self):

        # # 选中
        # WebDriverWait(self.driver, 10).until(self.click_find_elements(self,By.CSS_SELECTOR,'.ww_checkbox',2))
        #
        # # 删除
        # WebDriverWait(self.driver, 10).until(self.click_find_elements(self,By.CSS_SELECTOR,'.qui_btn.ww_btn.js_delete',1))
        #
        #
        # WebDriverWait(self.driver, 10).until(self.click_find_element(self,By.CSS_SELECTOR, '.qui_btn.ww_btn.ww_btn_Blue'))
        #
        # # self.driver.find_element(By.CSS_SELECTOR,'.qui_btn.ww_btn.ww_btn_Blue').click()
        time.sleep(10)

        self.driver.quit()


    def test_add_yichang(self):
        # 1. 访问企业微信主页面
        self.driver.get("https://work.weixin.qq.com/wework_admin/frame#contacts")
        # 2. 定义cookie,cookie信息从已经写入的cookie文件中获取
        cookie = yaml.safe_load(open("cookie.yaml"))
        # 3. 植入cookie
        for c in cookie:
            self.driver.add_cookie(c)
        time.sleep(3)
        # 4.再次访问企业微信页面,发现无需扫码自动登录,而且可以多次使用
        self.driver.get("https://work.weixin.qq.com/wework_admin/frame#contacts")
        # time.sleep(3)

        # WebDriverWait(self.driver, 10).until(self.click_find_element(self,By.ID, 'menu_contacts'))

        self.driver.find_element(By.ID, 'menu_contacts').click()
        time.sleep(3)

        # add 点击添加用户
        self.driver.find_elements(By.CSS_SELECTOR, '.qui_btn.ww_btn.js_add_member')[1].click()

        time.sleep(3)

        self.driver.find_element(By.NAME, 'username').send_keys(self.user()['username'])
        self.driver.find_element(By.NAME, 'english_name').send_keys(self.user()['english_name'])
        self.driver.find_element(By.NAME, 'acctid').send_keys(self.user()['acctid'])
        self.driver.find_element(By.NAME, 'gender').click()
        self.driver.find_element(By.NAME, 'mobile').send_keys('15205186923')
        self.driver.find_element(By.NAME, 'ext_tel').send_keys(self.user()['ext_tel'])
        self.driver.find_element(By.NAME, 'xcx_corp_address').send_keys(self.user()['xcx_corp_address'])
        self.driver.find_element(By.NAME, 'alias').send_keys(self.user()['alias'])
        self.driver.find_element(By.NAME, 'position').send_keys(self.user()['position'])
        self.driver.find_element(By.XPATH, '//*[text()="保存"]').click()
        time.sleep(2)



        text = self.driver.find_element(By.XPATH,'//*[text()="该手机已被“蔺伟奇”占有"]').text
        print(text)
        assert '占有' in text



test_chrome_add.py

import time
import yaml
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.wait import WebDriverWait
from 霍格沃兹魔法弗拉克.企业微信.get_cookies import CookieLogin


class Testadd(CookieLogin):
    def setup_class(self):
        self.driver = webdriver.Chrome()
        self.driver.maximize_window()
        self.driver.implicitly_wait(5)

    def teardown_class(self):

        # 选中
        WebDriverWait(self.driver, 10).until(self.click_find_elements(self,By.CSS_SELECTOR,'.ww_checkbox',2))

        # 删除
        WebDriverWait(self.driver, 10).until(self.click_find_elements(self,By.CSS_SELECTOR,'.qui_btn.ww_btn.js_delete',1))


        WebDriverWait(self.driver, 10).until(self.click_find_element(self,By.CSS_SELECTOR, '.qui_btn.ww_btn.ww_btn_Blue'))

        # self.driver.find_element(By.CSS_SELECTOR,'.qui_btn.ww_btn.ww_btn_Blue').click()
        time.sleep(10)

        self.driver.quit()

    def test_add(self):
        # 1. 访问企业微信主页面
        self.driver.get("https://work.weixin.qq.com/wework_admin/frame#contacts")
        # 2. 定义cookie,cookie信息从已经写入的cookie文件中获取
        cookie = yaml.safe_load(open("cookie.yaml"))
        # 3. 植入cookie
        for c in cookie:
            self.driver.add_cookie(c)
        time.sleep(3)
        # 4.再次访问企业微信页面,发现无需扫码自动登录,而且可以多次使用
        self.driver.get("https://work.weixin.qq.com/wework_admin/frame#contacts")
        # time.sleep(3)

        # WebDriverWait(self.driver, 10).until(self.click_find_element(self,By.ID, 'menu_contacts'))

        self.driver.find_element(By.ID, 'menu_contacts').click()
        time.sleep(3)

        # add 点击添加用户
        self.driver.find_elements(By.CSS_SELECTOR, '.qui_btn.ww_btn.js_add_member')[1].click()

        time.sleep(3)

        self.driver.find_element(By.NAME, 'username').send_keys(self.user()['username'])
        self.driver.find_element(By.NAME, 'english_name').send_keys(self.user()['english_name'])
        self.driver.find_element(By.NAME, 'acctid').send_keys(self.user()['acctid'])
        self.driver.find_element(By.NAME, 'gender').click()
        self.driver.find_element(By.NAME, 'mobile').send_keys(self.user()['mobile'])
        self.driver.find_element(By.NAME, 'ext_tel').send_keys(self.user()['ext_tel'])
        self.driver.find_element(By.NAME, 'xcx_corp_address').send_keys(self.user()['xcx_corp_address'])
        self.driver.find_element(By.NAME, 'alias').send_keys(self.user()['alias'])
        self.driver.find_element(By.NAME, 'position').send_keys(self.user()['position'])
        self.driver.find_element(By.XPATH, '//*[text()="保存"]').click()
        time.sleep(5)


        text = self.driver.find_element(By.XPATH,'//*[@id="member_list"]/tr[2]/td[2]').text
        assert text == self.user()['username']