在页面元素不变的情况下,将页面中的所有元素全部提取出来,放入单独的模块中
百度搜索页元素
from selenium.webdriver.common.by import By
from pages.basePage import Page
#百度搜索page,继承基础的Page类
class SearchPage(Page):
#搜索输入框
search_input=(By.ID,'kw')
#点击“百度一下”按钮
search_button=(By.ID,'su')
def __init__(self,driver,base_url="http://www.baidu.com"):
Page.__init__(self,driver,base_url)
def gotoBaiduHomePage(self):
print(u"打开首页:",self.base_url)
self.driver.get(self.base_url)
def input_search_text(self,text="selenium3"):
print(u"输入搜索关键字:selenium3")
self.input_text(self.search_input,text)
def click_search_btn(self):
print("点击“百度一下”按钮")
self.click(self.search_button)
用例调用该模块
import unittest
from selenium import webdriver
from pages.searchPage import SearchPage
class testSearchPage(unittest.TestCase):
def setUp(self):
self.driver=webdriver.Chrome(executable_path="c:\\chromedriver")
def testSearch(self):
driver = self.driver
url = "http://www.baidu.com"
text = "selenium"
assert_title = u"百度一下,你就知道"
search_Page = SearchPage(driver,url)
search_Page.gotoBaiduHomePage()
search_Page.input_search_text(text)
search_Page.click_search_btn()
self.assertEqual(search_Page.get_title(),assert_title)
def tearDown(self):
self.driver.quit()
但所有模块都有相同的地方就需要一个公共的模块,所有的页面模块都要继承这个基础模块
class Page(object):
#初始化参数
def __init__(self,driver,base_url="http://www.baidu.com"):
self.driver=driver
self.base_url=base_url
self.timeout=10
#重写元素定位方法
def find_element(self,*loc):
return self.driver.find_element(*loc)
def input_text(self,loc,text):
self.find_element(*loc).send_keys(text)
def click(self,loc):
self.find_element(*loc).click()
def get_title(self):
return self.driver.title
拆包
# 将未拆包的数据进行传参
# def run(a,*args):
# #第一个参数传给了a
# print(a)
# # args是一个元组,里面是2和3两个参数
# print(args)
# # *args是将这个元组中的元素依次取出来
# print("对args拆包:",*args)# *args 相当于 a,b = args
#
# run(1,2,3)
# 将未拆包的元组进行传参
# def run(*args):#args是一个元组
# print(args)
# # *args是将这个元组中的元素依次取出来
# print("对args拆包:",*args)
#
# a=(1,2,3)
# run(a)
# 将数字未拆包的元组进行传参
# def run(*args):#args是一个元组
# print(args)
# # *args是将这个元组中的元素依次取出来
# print("对args拆包:",*args)
#
# a=(1,2,3)
# run(0,a)
# 将已拆包的元组进行传参
# def run(*args):# args是一个元组 (1,2,3)
# print(args)
# # *args是将这个元组中的元素依次取出来
# print("对args拆包:",*args)
#
# a=(1,2,3)
# run(*a)
# 将已拆包的元组进行传参
# def run(*args):# args是一个元组
# print(args)
# # *args是将这个元组中的元素依次取出来
# print("对args拆包:",*args)
#
# a=(1,2,3)
# run(0,*a)
page文件目录下的basePage文件
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
class BasePage():
def __init__(self,driver,logger):
self.driver=driver
self.logger=logger
self.timeout=10
def ele_is_presence(self,eletuple):
try:
ele=WebDriverWait(self.driver, self.timeout).until(EC.presence_of_element_located(eletuple))
return ele
except:
self.logger.error('ele_is_presence:未找到元素 %s' %eletuple)
def input_text(self,eletuple,text):
try:
self.ele_is_presence(eletuple).send_keys(text)
except:
self.logger.error('click:未找到元素 %s 或不能发送文本'%eletuple)
def click(self,eletuple):
try:
self.ele_is_presence(eletuple).click()
except:
self.logger.error('click:未找到元素 %s 或不可点击'%eletuple)
def open_url(self,url):
self.driver.get(url)
page文件目录下的loginPage文件
from selenium.webdriver.common.by import By
from pages.basePage import BasePage
class LoinPage(BasePage):
username=(By.NAME,'login_info')
password=(By.NAME,'password')
submit=(By.CLASS_NAME,'submit_login')
# 输入用户名
def input_username(self,name):
self.input_text(self.username,name)
# 输入密码
def input_password(self,pwd):
self.input_text(self.password,pwd)
# 点击登录按钮
def click_submit(self):
self.click(self.submit)
page文件目录下的mainPage文件
from pages.basePage import BasePage
from selenium.webdriver.common.by import By
class MainPage(BasePage):
login_btn=(By.LINK_TEXT,'登录')
def enter_loginpage(self):
self.click(self.login_btn)