模块概念
python中一个.py称为一个模块
python中默认规则,包名和文件名都是小写,类名称单词首字母大写,函数名称小写,多个字母下划线隔开
使用模块有什么好处?
- 提高了代码的可维护性。
- 提高代码复用性。当一个模块编写完毕,就可以被其他地方引用。
命题
打开浏览器,百度搜索“selenium","前一页”,“后一页”,“退出”
思路
- demo1.py实现把常用的几个Selenium方法 back()、 forward()、open_url()、quitBrowser()封装到BasePage类
#coding:utf-8
class BasePage(object):
def __init__(self,driver):
self.driver=driver
def back(self):
self.driver.back()
def forward(self):
self.driver.forward()
def open_url(self,url):
self.driver.get(url)
def quitBrowser(self):
self.driver.quit()
#coding:utf-8
from selenium import webdriver
from demo1 import BasePage #两个文件在同一目录下,直接用import导入模块
import time
class BaseSearch(object):
driver=webdriver.Chrome()
driver.maximize_window()
driver.implicitly_wait(8)
basepage=BasePage(driver)
def open_baidu(self):
self.basepage.open_url("https://www.baidu.com")
def test_search(self):
self.driver.find_element_by_id("kw").send_keys("Selenium")
time.sleep(2)
self.basepage.back()
self.basepage.forward()
self.basepage.quitBrowser()
baidu=BaseSearch()
baidu.open_baidu()
baidu.test_search()
三类不同导入模块方式
方法 | 模块与可执行文件关系 |
---|---|
import方法 | py执行文件和模块同属于同一个父目录 |
sys模块 | py执行文件和模块不属于同一个父目录 |
通过pth文件 | py执行文件和模块不属于同一个父目录 |
import方法
- 目录结构如下(同一工程下,同一包内)
- demo01.py中导入源码l加如下代码:
from demo1 import BasePage
sys模块导入自定义模块的path
- 目录结构如下(同一工程下,不同包内)
- demo01.py中导入源码l加如下代码:
pth文件找到自定义模块
- 目录结构如下:
- 在python目录 D:\ProgramData\Anaconda3\Lib\site-packages下(请根据实际路径填写),新建文件module_pro1.pth,文档中编写demo1路径
- demo01.py中导入源码l加如下代码:
from demo1 import BasePage
配置过程中遇到问题
(1)PyCharm报错:Please specify a different SDK name
【原因】 因为PyCharm中存在相同名字的虚拟环境变量
【解决办法】【setting】-【project test】-【project Interpreter】-下拉列表中选择【show all】-删除重复的虚拟环境变量
(2) Pycharm执行demo01.py时,提示无法打开Selenium
【原因】 文档是直接从pro1粘贴到pro2的,导致执行路径未改变
【解决办法】
Pycharm右上角【Edit Configurations…】
对demo01设置正确的【Scripte path】