目标:学习二次封装。把常用的几个webdriver的方法封装到自己写的几个类中器,这个封装过程叫二次封装Selenium方法。我们把打开站点,浏览器前进和后退,关闭和退出浏览器这个方法封装到一个新写的类中去。
按照如下层次结构在PyCharm中新建两个包和两个.py文件:
上图,baidu_search.py是我们编写测试脚本的python文件,具体测试代码写在这个文件。包test1下的basepage.py文件是这次我们介绍的二次封装selenium方法而新建的。
注意:python中默认规则:
1.包名和文件名都是小写;
2.类名称首字母大写;
3.函数名称小写;
4.多个字母下划线隔开。
basepage.py的内容:
# coding = utf-8 class BasePage(object): """ 主要是把常用的几个Selenium方法封装到BasePage这个类; 演示以下几个方法: back() forward() get() quit() """ def __init__(self,driver): """ 写一个构造函数,有一个参数driver :param driver: """ self.driver = driver def back(self): """ 浏览器后退按钮 :return: """ self.driver.back() def forward(self): """ 浏览器前进按钮 :return: """ self.driver.forward() def open_url(self,url): """ 打开url站点 :param url: :return: """ def quit_browser(self): """ 关闭并停止浏览器服务 :return: """ self.driver.quit()
上面的''''''是文档注释,一般在类的开始和函数的开始,用两个''''''括起来,简单描述下这个类或者函数的功能。
接下来看看,我们脚本文件中如何去调用我们自己封装过的方法。
baidu_search.py的内容如下:
# coding=utf-8 import time from selenium import webdriver from test1.basepage import BasePage class BaiduSearch(object): driver = webdriver.Chrome() driver.maximize_window() driver.implicitly_wait(10) basepage = BasePage(driver) def open_baidu(self): self.basepage.open_url("https://www.baidu.com") time.sleep(1) def test_search(self): self.driver.find_element_by_id('kw').send_keys("Selenium") time.sleep(1) print(self.driver.title) self.driver.quit() self.basepage.back() self.basepage.forward() self.basepage.quit_browser() baidu = BaiduSearch() baidu.open_baidu() baidu.test_search()
上面self.basepage的几行代码就是调用我们自己封装的方法去执行相关webdriver操作。
参考文章:https://blog.csdn.net/u011541946/article/details/70159538