本文来介绍,如何把常用的几个webdriver的方法封装到自己写的一个类中去,这个封装过程叫二次封装Selenium方法。我们把打开站点,浏览器前进和后退,关闭和退出浏览器这这个方法封装到一个新写的类中去。
我们按照如下层次结构在PyCharm中新建两个包和两个.py文件:
上图,baidu_search.py是我们编写测试脚本的python文件,具体测试代码写在这个文件。包test1下的basepage.py文件是这次我们介绍的二次封装selenium方法而新建的。这里提一下,python中默认规则,包名和文件名都是小写,类名称单词首字母大写,函数名称小写,多个字母下划线隔开。我们尽量遵守下这个不成文的约定。
来看看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):
- """
- 浏览器后退按钮
- :param none:
- """
- self.driver.back()
- def forward(self):
- """
- 浏览器前进按钮
- :param none:
- """
- self.driver.forward()
- def open_url(self, url):
- """
- 打开url站点
- :param url:
- """
- self.driver.get(url)
- def quit_browser(self):
- """
- 关闭并停止浏览器服务
- :param none:
- """
- 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)
- self.basepage.back()
- self.basepage.forward()
- self.basepage.quit_browser()
- baidu = BaiduSearch()
- baidu.open_baidu()
- baidu.test_search()
上面self.basepage的几行代码就是调用我们自己封装的方法去执行相关webdriver操作。这个只是一个简单的封装介绍,等后面,我们介绍了字符串切割,我们会再次介绍二次封装Selenium方法,例如将会把八大find_element方法封装到一个方法里去。
如需更深了解和交流,请加QQ群: 49044146