1.basepage.py文件
from selenium import webdriver
#公共的,对driver初始化的部分做抽离
from selenium.webdriver.remote.webdriver import WebDriver
class BasePage:
# def __init__(self,base_url: WebDriver = None):
# #避免driver重复初始化
# if base_url is None:
# opt = webdriver.ChromeOptions()
# opt.debugger_address = "127.0.0.1:9222"
# self.driver = webdriver.Chrome(options=opt)
# self.driver.implicitly_wait(10)
# else:
# self.driver = base_url
def __init__(self,base_url:WebDriver = None):
if base_url is None:
opt = webdriver.ChromeOptions() #配置chrome启动是属性的类
opt.debugger_address = "127.0.0.1:9222" #设置调试器地址
self.driver = webdriver.Chrome(options=opt)
self.driver.implicitly_wait(10) #启动时添加指定的选项
else:
self.driver = base_url
2.main_page.py
import time
from selenium import webdriver
from selenium_po.page.basepage import BasePage
from selenium_po.page.contact_page import ContactPage
class MainPage(BasePage):
base_url = "https://work.weixin.qq.com/wework_admin/frame"
def goto_contact_page(self):
self.driver.find_element_by_id("menu_contacts").click()
return ContactPage(self.driver)
3.contact_page.py
import time
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions
from selenium.webdriver.support.wait import WebDriverWait
from selenium_po.page.basepage import BasePage
class ContactPage(BasePage):
def click_add_member(self):
from selenium_po.page.add_member_page import AddMemberPage
ele = (By.CSS_SELECTOR, ".ww_operationBar .js_add_member")
WebDriverWait(self.driver, 10).until(expected_conditions.element_to_be_clickable(ele))
while True:
# ele = driver.find_element_by_css_selector(".ww_operationBar .js_add_member")
# ele.click() #不停点,直到添加成员页面出现
self.driver.find_element(*ele).click()# 解数组
element = self.driver.find_elements_by_id("username")#用elements找到username,说明进入到添加成员页面
if len(element) > 0:
break
return AddMemberPage(self.driver)
def get_member(self):
time.sleep(2)
eles = self.driver.find_elements_by_css_selector('.member_colRight_memberTable_td:nth-child(2)')
name_list = []
for value in eles:
# 获取元素属性title的值,存入list内
print(value.get_attribute("title"))
# if value.get_attribute("title") == "七ds月3":
# return True
# return False
name_list.append(value.get_attribute("title"))
# 断言目标名字是否在列表内
return name_list
4.add_member_page.py
from selenium import webdriver
from selenium_po.page.basepage import BasePage
class AddMemberPage(BasePage):
def add_member(self,name,id,mail):
from selenium_po.page.contact_page import ContactPage
self.driver.find_element_by_id("username").send_keys(name)
# self.driver.find_element_by_id("memberAdd_english_name").send_keys("iui")
self.driver.find_element_by_id('memberAdd_acctid').send_keys(id)
# self.driver.find_element_by_id("memberAdd_phone").send_keys("15984005545")
self.driver.find_element_by_id("memberAdd_mail").send_keys(mail)
self.driver.find_element_by_css_selector(".js_btn_save").click()
return ContactPage(self.driver)
5.test_po.py
import pytest
from selenium_po.page.main_page import MainPage
class TestLogin:
def setup(self):
self.main = MainPage()
def teardown(self):
pass
@pytest.mark.parametrize("name,id,mail",[("lisi","lisi","22850922@qq.com")])
def test_login(self,name,id,mail):
# name = "zhang"
# id = "ssrf"
# mail = "2253224@qq.com"
namelist = self.main.goto_contact_page().click_add_member().add_member(name,id,mail).get_member()
print(namelist)
assert name in namelist
6.封装by.id
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium_po.page.basepage import BasePage
class AddMemberPage(BasePage):
def add_member(self,name,id,mail):
from selenium_po.page.contact_page import ContactPage
ele_name = (By.ID,"username")
ele_id = (By.ID,"memberAdd_acctid")
ele_mail = (By.ID,"memberAdd_mail")
#讲解的效果示例:*self.ele_name
self.driver.find_element(*ele_name).send_keys(name)
# self.driver.find_element_by_id("memberAdd_english_name").send_keys("iui")
self.driver.find_element(*ele_id).send_keys(id)
# self.driver.find_element_by_id("memberAdd_phone").send_keys("15984005545")
self.driver.find_element(*ele_mail).send_keys(mail)
self.driver.find_element_by_css_selector(".js_btn_save").click()
return ContactPage(self.driver)
def add_member_fail(self,name,id,mail):
from selenium_po.page.contact_page import ContactPage
self.driver.find_element_by_id("username").send_keys(name)
# self.driver.find_element_by_id("memberAdd_english_name").send_keys("iui")
self.driver.find_element_by_id('memberAdd_acctid').send_keys(id)
# self.driver.find_element_by_id("memberAdd_phone").send_keys("15984005545")
self.driver.find_element_by_id("memberAdd_mail").send_keys(mail)
self.driver.find_element_by_css_selector(".js_btn_save").click()
return ContactPage(self.driver)