在写Python的代码块中,能够定义类就定义一个类,通过定义方法,这样在别人的项目中想要调用的时候就可以通过导包的方式来来实现,提高代码的重复使用性。
在写Python的代码块中,能够用到构造方法就用构造方法,构造方法和析构方法一块使用。
def __init__(self):#构造方法
dr = webdriver.Chrome()
dr.implicitly_wait(10)
dr.maximize_window()
dr.get('http://47.105.47.131/zentaopms/www/index.php?m=user&f=login')
# 登陆
dr.find_element_by_id('account').send_keys("fankaikai") # 输入用户名
dr.find_element_by_name('password').send_keys('qftest2020') # 输入密码
dr.find_element_by_id('submit').click() # 单击登陆按钮 dr.find_element_by_xpath("(//a[text()='Bug'])[1]").click() # 单击“我的地盘”旁的Bug
self.dr = dr
def __del__(self):#析构方法
self.dr.find_element_by_link_text("樊凯凯").click()
self.dr.find_element_by_link_text("退出").click()
self.dr.close()
# self.dr.quit()#用不了,会报错
#在上面的构造方法和析构方法之后,用不了quit,因为关闭的是所有的页面,而close是关闭的当前的页面
在Python中想要调用方法的时候,就可以通过self.dr ,为了避免重复写代码可以通过复制的方式 dr=self.dr
def search_bug(self):#查询BUG
dr = self.dr
dr.find_element_by_id("bysearchTab").click()#单击搜索
dr.find_element_by_id("value1").send_keys('【测试数据】系统不能正常登陆')#单击按标题搜索的输入框
dr.find_element_by_id("submit").click() # 单击搜索结果
sleep(2)
result = dr.find_element_by_xpath('//*[@id="bugForm"]/div[3]/div[3]/strong[1]').text
if result == '1':
print("查询成功!")
else:
print("查询失败!")
以上代码就是用了self.dr 重新赋给了dr这样可以避免重复写self.df
在进行自动化的时候,有些前面的一些内容不能修改,这样在测试的时候往往测试的不够全面,因此我们可以通过修改属性值来进行测试
下面是eg:
# dr.execute_script("document.getElementById('account').readOnly=true;")
true 是只读属性false删除属性
登录页面的验证码用于识别人机操作,增强安全性
处理验证码有以下几种方式
①屏蔽验证码
②万能验证码
③图像识别
④添加cookie
⑤打码平台
文件上传的方式有两种
第一通过send_keys(后面加上文件上传的路径)
以下是示例
# dr.find_element_by_id('batchfile').send_keys(r"D:\kaijiangdaochu.xlsx")
第二种通过工具来进行上传文件
需要装一个工具pyhoock
以下是示例的代码
from pykeyboard import PyKeyboard
dr.find_element_by_id('batchfile').click()#单击文件上传按钮
sleep(2)
k = PyKeyboard()#实例化
k.type_string(r"D:\kaijiangdaochu.xlsx")#输入要上传的文件地址
sleep(2)
k.press_keys([k.alt_key,'o'])#点击alt+o快捷键实现上传