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']