码迷,mamicode.com
首页 > 其他好文 > 详细

0721复习

时间:2018-07-25 22:41:20      阅读:223      评论:0      收藏:0      [点我收藏+]

标签:路径   高级   tab   lse   gecko   部分   谷歌   构造   option   

一步步导入调用,填坑,最终在ClientSelenium.py中实例化,拉起webdriver和浏览器和打开目标url

通过本次复习收获,课堂的视频一定再看一遍并按照步骤重新搭建框架,才能把知识点真正搞明白

config.ini

[Driver]
chrome = E:\PageObject\driver\chromedriver.exe
firefox = E:\PageObject\driver\geckodriver.exe

[Url]
ali_url = https://618.tmall.com
baidu_url = https://www.baidu.com/

setting.py

import os
#E:\PageObject
project_path = os.path.dirname(os.path.abspath("."))
driver_path = project_path + "\\driver"
ini_path = project_path +"\\Conf\\config.ini"

ReadIni.py

from configparser import ConfigParser   # 可以把类名重命名 as cf
from Conf.setting import *
from time import sleep

#util/ReadIni.py

#读取文件 project/Conf/config.ini
#封装函数 类名

#ConfigParser() 实例化一个读取ini的赋予对象
#新建一个类读取ini的类 类里面的成员方法cf  cf方法绑定ConfigParser()
#cf读取testdata下面的绝对路径,encoding="utf-8" :编译格式

#定义了两个函数方法,完全解耦的
#第一个函数作用是拿到某个集合名称下面的所有内容
#这个通过传统json格式返回对象items,包裹dict()
#第二个函数作用是一层层拿,根据某个集合名称下面的options的key拿到最终的value
#根据传入的参数

class ReadIni(object):
    def __init__(self,ini_path):  #project_path + "\\..."
        self.cf = ConfigParser()   #configparser库的类名 ,少了()没有参数
        self.cf.read(ini_path, encoding="utf-8")   #ini_path读出来以后=cf.read  返回是cf

    def get_item_section(self,sectionName):    # sectionName 读取什么里面的内容?
        "获取配置文件指定的section下面的所有内容"
        optionDict = dict(self.cf.items(sectionName))
        return optionDict  #字典

    def get_option_value(self, sectionName, optionName):
        "返回对应option键值对的value ??"
        value = self.cf.get(sectionName,optionName)
        return value

#实例化
#第一件事情拿到Url下面所有的集合
#第二件事情拿到阿里url的value
if __name__ == __main__:    #隔离一下
    ri = ReadIni(ini_path)    #这里给参数,是因为有构造函数吗?
    print(ri.get_item_section("Url"))
    print(ri.get_option_value("Url","baidu_url"))
    print(ri.get_item_section("Driver"))
    print(ri.get_option_value("Driver", "chrome"))

Base.py

# 只有用到的部分
from Conf.setting import *  #其他都被这个文件导入了, from后面跟着是文件夹绝对路径,可以想想比如os
from util.ReadIni import ReadIni #也可以放入Conf\setting.py
pc =ReadIni(ini_path)
class Base(object):
    def chrome_path(self):
        "谷歌的浏览器驱动"
        #读取驱动
        return pc.get_option_value("Driver", "chrome") #把driver目录拷贝到一级目录下。 这里之前写错了,传错了一个函数

    def firefox_path(self):
        "火狐的浏览器驱动"
        return pc.get_option_value("Driver", "firefox")

    def baidu_url(self):
        "百度的网址"
        return pc.get_option_value("Url", "baidu_url")

    def ali_url(self):
        "天猫的网址"
        return pc.get_option_value("Url", "ali_url")

# b = Base()
# print(b.chrome_path())
# print(b.baidu_url())
ClientSelenium.py
from selenium import webdriver
from util.Base import Base
base = Base()   #调用类,没有参数()

#只开放了基础api的,定位器请自己学习封装完成作业,下节课在讲带保护的高级封装
class ClientSelenium(object):
    """通过封装把Page的行为压缩在这里"""
    def get_driver(self,driver, url):
        "拉起webdriver和浏览器和打开目标url   可以用于setUpClass的初始化"
        if driver == firefox or driver == Firefox or driver == F or driver == f:
            exe_path = base.firefox_path()  #第二个功能是包裹在第一个功能下面的   base代码稍等
            self.driver = webdriver.Firefox(executable_path=exe_path)
        elif driver == Chrome or driver == chrome or driver == Ch or driver == ch:
            exe_path = base.chrome_path()
            self.driver = webdriver.Chrome(executable_path=exe_path)
        else:
            print("输入在预期以外")

        url = base.baidu_url()
        self.driver.get(url) #区域3
        return self.driver



    def quit(self):
        self.driver.quit()


if __name__ == __main__:
    a = ClientSelenium()
    a.get_driver("chrome", "baidu_url")   #调用config中的url,需要相同作用的函数导出路径
    a.quit()

 

0721复习

标签:路径   高级   tab   lse   gecko   部分   谷歌   构造   option   

原文地址:https://www.cnblogs.com/testerhome-yizhou2018/p/9368633.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!