自动化快速上手--python(25)--反射

“”"

pass

看以下代码帮助你更快的理解,这是A.py文件的内容:

def number(num):

print(f"{num}")

return “我反射过来了”

这是B.py的内容

import test01

i = getattr(test01, ‘number’)(‘清安’)

print(i)

清安

我反射过来了

这里的test01就是我的A.py,我导入了B.py文件中。前面说了name必须是字符串,所以这里的number其实是A.py文件中的函数方法,这里等价于:test01.number(‘qingan’)。

那么就有小伙伴文了,源文件里面不是有个default=None,如果没有查找到,用该值替代。

o = getattr(test01, ‘numbe’)

print(o)

i = getattr(test01, ‘numbe’,‘不存在’)

print(i)

看这两个例子,一个用了默认值,一个没用默认值,没用默认值的且函数方法错了,那么运行之后就会告诉你这样的一个错误:

AttributeError: module ‘test01’ has no attribute ‘numbe’

那么用了默认值的,则会告诉你"不存在"。这样的一个字样

在学习的过程中,你会看到不一样的教程,getattr反射的是某类的属性,也只能是属性,要是反射其他的就会报错。但其实不然,都可以进行反射,因为函数方法也可以是属性,就比如上述例子中。

那么问题来了,为什么要学这个。我们不是自动化测试吗?

if brower_type == 0 or brower_type == BrowserDriver.Chrome:

driver = webdriver.Chrome()

elif brower_type == 1 or brower_type == BrowserDriver.Firefox:

driver = webdriver.Firefox()

elif brower_type == 2 or brower_type == BrowserDriver.Ie:

driver = webdriver.Ie()

elif brower_type == 3 or brower_type == BrowserDriver.Edge:

driver = webdriver.Edge()

上述代码中,你是否也有这么写过呢,用很多的if-elif-else来判断一个浏览器,或者定位方法。这样写难道自己觉得不多于吗,重复写了很多代码。

那么如何优化呢?答案就是getattr反射。看代码:

–>>>清安<<<—

from selenium import webdriver

def driver_(option_):

che = getattr(webdriver, option_)()

return che

class Browser:

def init(self,option_):

self.driver = driver_(option_)

def open(self,url):

self.driver.get(url)

这是主代码的方法,写的比较简单,但是一个实实在在的例子。我可以根据传入不同的值来打开不同的浏览器,且只有两行代码。再比较上述的写了一行又一行的代码,麻烦且重复。

getattr(webdriver, option_)()等价于webdriver.option_()。这里的option_就是需要传入的驱动。

那么如何传值到主代码,且调用主代码中类的函数方法呢。

from test01 import Browser

driver = Browser(‘Chrome’)

driver.open(‘https://baidu.com’)

这里就很方便了,我在Browser中传入火狐的,IE的那么就会在对应的浏览器中打开对应的百度链接。

好了,对于getattr的运用介绍到这,你可以在元素定位的方法删同样运用起来,因为selenium中八大元素定位,如果你还像if-elif-else一样写,那就太磨人了。

hasattr

=======

以下是源文件介绍:

def hasattr(*args, **kwargs): # real signature unknown

“”"

Return whether the object has an attribute with the given name.

This is done by calling getattr(obj, name) and catching AttributeError.

“”"

pass

返回对象是否具有具有给定名称的属性,这是通过调用  getattr(obj,name) 并捕获AttributeError来完成的。

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数Python工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Python开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。

img

img

img

img

img

img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上前端开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新

如果你觉得这些内容对你有帮助,可以扫码获取!!!(备注:Python)

blog.csdnimg.cn/img_convert/9f49b566129f47b8a67243c1008edf79.png)

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上前端开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新

如果你觉得这些内容对你有帮助,可以扫码获取!!!(备注:Python)

  • 25
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
抱歉,我无法直接编写前110页的内容,但我可以给你一些基本的Python编程知识和示例代码,以帮助你开始自动化繁琐的工作。 1. 使用Python打开文件 ``` # 打开一个文件 f = open('file.txt', 'r') # 读取文件内容 content = f.read() # 关闭文件 f.close() ``` 2. 使用Python写入文件 ``` # 打开一个文件 f = open('file.txt', 'w') # 写入内容 f.write('Hello, World!') # 关闭文件 f.close() ``` 3. 使用Python处理Excel文件 ``` # 导入 openpyxl 库 import openpyxl # 打开 Excel 文件 wb = openpyxl.load_workbook('example.xlsx') # 获取表格 sheet = wb['Sheet1'] # 读取单元格的值 value = sheet['A1'].value # 写入单元格的值 sheet['A1'] = 'Hello, World!' # 保存文件 wb.save('example.xlsx') ``` 4. 使用Python发送邮件 ``` # 导入 smtplib 库 import smtplib # 连接邮箱服务器 server = smtplib.SMTP('smtp.gmail.com', 587) server.starttls() # 登录邮箱账号 server.login('your_email@gmail.com', 'your_password') # 发送邮件 msg = 'Hello, World!' server.sendmail('your_email@gmail.com', 'recipient_email@gmail.com', msg) # 关闭连接 server.quit() ``` 5. 使用Python处理文本 ``` # 读取文本文件 f = open('file.txt', 'r') content = f.read() f.close() # 替换文本 new_content = content.replace('Hello', 'Hi') # 写入文本文件 f = open('file.txt', 'w') f.write(new_content) f.close() ``` 这些示例代码只是Python编程的基础,还有很多其他的功能和库可以用于自动化繁琐的工作。希望这些代码可以帮助你入门Python编程。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值