博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Python+Selenium中级篇之2-Python中类/函数/模块的简单介绍和方法调用------修改后的
阅读量:4290 次
发布时间:2019-05-27

本文共 2385 字,大约阅读时间需要 7 分钟。

https://blog.csdn.net/u011541946/article/details/70157011-----修改了baidusearch代码,增加了.click()

前篇文章介绍了PyCharm的基本使用,接下来我们的脚本代码都在这个PyCharm这个编辑器里写。好处有很多,项目文件结构层次清晰,写代码的时候会自动化提示和补全。这里,我们在昨天创建的项目下,新建一个包,然后在包下面新建一个demo.py文件。抄写以下代码到你的环境里,尝试运行下,看看有没有问题

关于Python中类和函数及方法的调用,我们写在这个demo.py文件,具体代码如下

# coding=utf-8  

  
class ClassA(object):  
  
    string1  = "这是一个字符串。"  
  
    def instancefunc(self):  
        print ('这是一个实例方法。')  
        print (self)  
 
    @classmethod  
    def classfunc(cls):  
        print ('这是一个类方法。')  
        print (cls)  
 
    @staticmethod  
    def staticfun():  
        print ('这是一个静态方法。')  
  
  
test = ClassA()  # 初始化一个ClasssA的对象,test是类ClassA的实例对象  
test.instancefunc()  # 对象调用实例方法  
  
test.staticfun()  # 对象调用静态方法  
  
test.classfunc()  # 对象调用类方法  
  
print test.string1 # 对象调用类变量  
  
ClassA.instancefunc(test)  # 类调用实例方法,需要带参数,这里的test是一个对象参数  
ClassA.instancefunc(ClassA) # 类调用实例方法,需要带参数,这里的ClassA是一个类参数  
ClassA.staticfun() # 类调用静态方法  

ClassA.classfunc()  # 类调用类方法  

备注:

先运行下代码是否会报错,然后尝试自己去理解下。主要有以下几点内容

1. 类的定义,class开头的就表示这是一个类,小括号里面的,表示这个类的父类,涉及到继承,默认object是所有类的父类。python中定义类,小括号内主要有三种:1. 具体一个父类,2. object 3. 空白

2. 函数或方法的定义, def开头就表示定义一个函数,方法包括,实例方法,类方法,静态方法,注意看类方法和静态方法定义的时候上面有一个@标记。

3. 对象调用方法和类调用方法的使用。

       这篇讲的东西,确实比较难理解。如果学过java的人,可能会好理解类和对象,以及面向对象的概念。Python同时支持面向过程变成和面向对象编程,所有python中也有类和对象等概念。一般来说,概念的东西比较绕,如果你Python基础没有看到这部分,那边请回去《看笨方法学python》中关于这块的介绍。如果有看过了,还是不理解,我只能告诉你,继续学下去,你现在哪怕死记住这些概念和他们的基本使用。等到后面,框架设计部分,你会慢慢体会到这些基本概念的实际用法,你跟着写了代码后,会有助于你自己的理解和提高。

       最后,来说下python中的模块,在python中,你新建一个demo.py文件,那么一个.py文件可以说是一个模块,一个模块中,可以定义多个class,模块中也可以直接定义函数。和java一样,访问不同包下的类和方法之前,需要导入相关路径下的包。例如from selenium import webdriver  这个导入语句,我们知道webdriver这个接口是在selenium的模块下。

本篇文章的学习目的,会用函数或者类来编写我们之前写过的脚本。

以下用百度搜索举例,模仿上面用类调用实例的方法来写这个脚本,可能看起来比较啰嗦,但是代码多了,你就会体会到类的作用,注意这里self指的是当前BaiduSearch这个类本身:

# coding=utf-8import timefrom selenium import webdriverclass BaiduSearch(object):    driver = webdriver.Chrome()    driver.maximize_window()    driver.implicitly_wait(10)    def open_baidu(self):        self.driver.get("https://www.baidu.com")        time.sleep(1)    def test_search(self):        self.driver.find_element_by_id('kw').send_keys("selenium")        self.driver.find_element_by_id('su').click()        time.sleep(1)        print self.driver.title        time.sleep(1)        try:            assert 'selenium' in self.driver.title            print ('Test pass.')        except Exception as e:            print ('Test fail.')        self.driver.quit()baidu = BaiduSearch()baidu.open_baidu()baidu.test_search()
你可能感兴趣的文章
java-nio之Selector组件
查看>>
java-编码解密
查看>>
netty源码分析之-Future、ChannelFuture与ChannelPromise详解(3)
查看>>
redis主从集群的搭建
查看>>
redis cluster集群搭建与深入分析(1)
查看>>
netty源码分析之-引导详解(4)
查看>>
redis cluster节点的添加与删除(2)
查看>>
nginx+redis+tomcat三级缓存架构讲解
查看>>
Reactor模式详解
查看>>
基于OpenRestry部署nginx+lua实现流量定向分发
查看>>
netty源码分析之-服务端启动核心源码分析(5)
查看>>
Storm并行度和流分组详解
查看>>
缓存数据预热详解
查看>>
热点数据降级详解(storm+nginx+lua)
查看>>
加载更多功能实现
查看>>
React相关Dom约束性和非约束性操作
查看>>
Hystrix高可用架构介绍
查看>>
netty源码分析之-SimpleChannelInboundHandler与ChannelInboundHandlerAdapter详解(6)
查看>>
netty源码分析之-开发过程中重要事项分析(7)
查看>>
Sublime Text3插件详解
查看>>