# !/usr/bin/env python
# -*- coding:utf-8 -*-
# 1、举例说明Python中编码以及解码的应用
name = "星德川"
str_byte = name.encode("utf-8")
# encode()编码:就是把str的数据类型转为bytes的数据类型的过程
print(str_byte)
byte_str = str_byte.decode("utf-8")
# decode():把bytes的数据类型转为str的数据类型的过程
print(byte_str)
# 2、替换字符串里面的内容实用的方法为?
str1 = 'hello world'
# replace()替换字符串的内容
print(str1.replace("world", "Python"))
# 3、判断字符串开头以及结尾的方法为?
# 判断字符串以什么开头
print(str1.startswith("h"))
# 判断字符串以什么结束
print(str1.endswith("e"))
# 4、获取字符串的索引信息
print(str1.index('h'))
# 5、元组与列表的区别是什么
# 元组不可修改
# 列表可以修改
# 6、列表与字符串怎么实现互相转换
list1 = str1.split(' ')
print(list1)
# 7、列表与元组怎么实现互相转换
list2 = [1, 2, 3]
tuple1 = tuple(list2)
print(tuple1)
# 8、列表中append()与insert()方法的区别是什么?
# append()结尾添加
# insert()指定位置添加
list3 = [1, 2, 3, 4, 5, 6]
list3.append(7)
list3.insert(0, 0)
print(list3)
# 9、实现字典的函数是什么?请分别按key或者value的形式实现字典的排序
# sorted()对所有对象排序操作
dict1 = {'a': 'b', 'c': 'd', 'e': 'f'}
print("对字典根据key进行排序:", dict(sorted(dict1.items(), key=lambda item: item[0])))
print("对字典根据value进行排序:", dict(sorted(dict1.items(), key=lambda item: item[1])))
# 10、获取出列表里面的Python的值,具体列表为:
list4 = [1, 2, 3, ['language', ['go', ['java', ['Python']]]]]
print(list4[3][1][1][1])
# !/usr/bin/env python
# -*- coding:utf-8 -*-
# 1、详细的描述下全局变量和局部变量
A = '1'
def ABC():
B = '2'
global A
A = '3'
print(B, A)
ABC()
print(A)
# 全局变量:在Python文件中定义的变量
# 局部变量:在Python文件中函数里面定义的变量
# 优先级:在函数内部的局部变量高于全局变量
# 在函数内部使用全局变量的时候,可以使用关键字global来申明
# 2、详细的描述下函数中动态参数的应用
def func(*args, **kwargs):
print(args)
print('args类型', type(args))
print(kwargs)
print('kwargs类型', type(kwargs))
# 3、结合具体的案例编写一个类的继承
class father(object):
def __init__(self, a):
self.a = a
def show(self):
print(self.a)
class son(father):
def __init__(self, a, b):
father.__init__(self, a)
self.b = b
def show(self):
print(self.a, self.b)
objfather = son(a=1, b=2)
objfather.show()
# 4、结合具体的案例演示下默认参数的应用
def add(b, a=1):
return a + b
print(add(b=3))
# 5、使用函数的知识编写一个登录,注册的案例
import json
class Actual(object):
def out(self):
username = input('请输入用户名\n')
password = input('请输入密码\n')
return username, password
def register(self):
username, password = self.out()
temp = username + "|" + password
json.dump(temp, open('user.md', 'w'))
# 以元组形式储存
def login(self):
username, password = self.out()
list = str(json.load(open('user.md'))).split('|')
# split以指定字符对字符串切片
if username == list[0] and password == list[1]:
return True
else:
print('请检查你的账户或密码')
def profile(self):
list = str(json.load(open('user.md'))).split('|')
if self.login():
print('欢迎{0}'.format(list[0]))
def main(self):
while True:
try:
f = int(input('1、注册 2、登录 3、查看主页 4、退出\n'))
if f == 1:
self.register()
elif f == 2:
self.login()
elif f == 3:
self.profile()
elif f == 4:
exit(0)
else:
continue
except Exception as e:
continue
if __name__ == '__main__':
obj = Actual()
obj.main()
# 6、结合函数知识编写一本函数多个返回值的案例
def login():
user = input('请输入用户名\n')
pawd = input('请输入密码\n')
if user == 'admin' and pawd == 'admin':
return 'token'
def profile(token):
if token == 'token':
print('登陆成功')
else:
print('账户或密码不正确')
profile(token=login())
# !/usr/bin/env python
# -*- coding:utf-8 -*-
from selenium import webdriver
import time as t
# 1、结合unittest以及元素定位方法,编写具体的测试用例
driver = webdriver.Chrome()
driver.get("http://www.baidu.com")
# 通过ID来定位
driver.find_element_by_id("kw").send_keys("hello word")
# # 通过name来定位
# driver.find_element_by_name("wd").send_keys("hello word")
# # 通过class_name来定位
# driver.find_element_by_class_name("s_ipt").send_keys("hello word")
# # 通过xpath定位
# driver.find_element_by_xpath('//*[@id="kw"]').send_keys("hello word")
# # css定位
# driver.find_element_by_css_selector("#kw").send_keys("hello word")
# # LINK_TEXT精准
# driver.find_element_by_link_text("直播").click()
# # PARTIAL_LINK_TEXT模糊
# driver.find_element_by_partial_link_text("播").click()
# # link_text和partial_link_text定位超链接标签
# # 可以使用精准或模糊匹配,如果使用模糊匹配最好能使用可以唯一关键字
# # tag_name多个元素的定位方式
# tag = driver.find_elements_by_tag_name("input")
# tag[7].send_keys("admin")
t.sleep(5)
driver.quit()
# 2、通过实际的案例来演示单个元素定位和多个元素的方式
# tag_name多个元素的定位方式
driver = webdriver.Chrome()
driver.get("http://www.baidu.com")
tag = driver.find_elements_by_tag_name("input")
tag[7].send_keys("admin")
t.sleep(5)
driver.quit()
# !/usr/bin/env python
# -*- coding:utf-8 -*-
from selenium import webdriver
import time as t
# 1、通过案例来演示iframe的不同定位方式(id,name,索引)
driver = webdriver.Chrome()
driver.maximize_window()
driver.get('https://mail.qq.com/')
# 进入iframe,id和name一致
driver.switch_to.frame('login_frame')
# driver.switch_to.frame(0)
# 账户密码
t.sleep(3)
driver.find_element_by_name('u').send_keys("用户名")
driver.find_element_by_name('p').send_keys("密码")
t.sleep(3)
driver.quit()
# 2、结合具体的案例来说明多窗口的处理
driver = webdriver.Chrome()
driver.maximize_window()
driver.get('https://www.baidu.com/')
nowHandler = driver.current_window_handle
driver.find_element_by_xpath('//*[@id="s-top-left"]/a[1]').click()
t.sleep(3)
allHandle = driver.window_handles
for handle in allHandle:
if handle != nowHandler:
driver.switch_to.window(handle)
driver.close()
t.sleep(3)
driver.quit()
# 3、通过拉勾网来演示下来框的交互
driver = webdriver.Chrome()
driver.maximize_window()
driver.get('https://www.lagou.com/wn/jobs?kd=%E6%B5%8B%E8%AF%95%E5%B7%A5%E7%A8%8B%E5%B8%88&city=%E5%85%A8%E5%9B%BD')
t.sleep(6)
driver.find_element_by_xpath('//*[@id="jobsContainer"]/div[2]/div[1]/div[1]/div[2]/div/ul/li[2]/div/span').click()
t.sleep(3)
driver.find_element_by_xpath(
'//*[@id="jobsContainer"]/div[2]/div[1]/div[1]/div[2]/div/ul/li[2]/div/div/ul[2]/li[1]/span').click()
t.sleep(3)
driver.quit()
# 4、演示get_attribute()方法的具体使用
driver = webdriver.Chrome()
driver.maximize_window()
driver.get('https://mail.sina.com.cn/')
list = driver.find_element_by_xpath('/html/body/div[3]/div/div[2]/div/div/div[4]/div[1]/div[1]/div[5]').get_attribute(
'textContent')
print(list)
t.sleep(3)
driver.quit()
# 5、集合互联网产品来演示is_selected()的使用
driver = webdriver.Chrome()
driver.maximize_window()
driver.get('https://mail.sina.com.cn/')
page = driver.find_element_by_xpath('//*[@id="store1"]')
print(page.is_selected())
assert page.is_selected() == True
t.sleep(3)
driver.quit()
# !/usr/bin/env python
# -*- coding:utf-8 -*-
# 1、结合案例来演示unittest测试框架各个组件的应用
from selenium import webdriver
import unittest
import time as t
class TestSina(unittest.TestCase):
@classmethod
def setUpClass(cls) -> None:
cls.driver = webdriver.Chrome()
cls.driver.maximize_window()
cls.driver.get('https://mail.sina.com.cn')
cls.driver.implicitly_wait(30)
@classmethod
def tearDownClass(cls) -> None:
cls.driver.quit()
def test_sina_001(self):
isLogin = self.driver.find_element_by_xpath('//*[@id="store1"]')
self.assertEqual(isLogin.is_selected(), True)
def test_sina_002(self):
self.driver.find_element_by_link_text('登录').click()
t.sleep(3)
divText = self.driver.find_element_by_xpath(
'/html/body/div[3]/div/div[2]/div/div/div[4]/div[1]/div[1]/div[1]/span[1]')
self.assertEqual(divText.text, '请输入邮箱名')
def test_sina_003(self):
self.driver.find_element_by_id('freename').send_keys('admin@sina.com')
self.driver.find_element_by_link_text('登录').click()
t.sleep(3)
divText = self.driver.find_element_by_xpath(
'/html/body/div[3]/div/div[2]/div/div/div[4]/div[1]/div[1]/div[1]/span[2]')
self.assertEqual(divText.text, '请输入密码')
def test_sina_004(self):
nowHander = self.driver.current_window_handle
self.driver.find_element_by_link_text('注册').click()
t.sleep(3)
allHander = self.driver.window_handles
for hander in allHander:
if hander != nowHander:
t.sleep(3)
self.driver.switch_to.window(hander)
self.assertEqual(self.driver.current_url, 'https://mail.sina.com.cn/register/regmail.php')
if __name__ == '__main__':
unittest.main(verbosity=2)
# # 按照测试类执行
# suite = unittest.TestLoader().loadTestsFromTestCase(TestSina)
# unittest.TextTestRunner().run(suite)
# # 按照文件执行
# suite = unittest.TestLoader().loadTestsFromModule('unittest使用.py')
# unittest.TextTestRunner().run(suite)
'''
1、每个测试用例都必须是test开头的,一般建议test_
2、每个测试用例都应该有标题
3、每个测试用例建议只写一个测试场景
4、每个测试用例都必须得有结果信息,也就是断言
5、每个测试用例都是独立的,测试用例之间不会因为业务的依赖关系而关系
'''
# 2、结合unittest来生成HTML的测试报到
import os
import time
import unittest
import HTMLTestRunner
from utils.pathUtils import base_dir
def suites():
# 获取被执行的测试套件
suite = unittest.TestLoader().discover(
start_dir=os.path.join(base_dir(), 'tests'),
pattern='test_*.py'
)
return suite
def nowTime():
return time.strftime('%y_%m_%d_%H_%M_%S', time.localtime())
def run():
# 执行测试套件
fp = open(os.path.join(base_dir(), 'report', nowTime() + 'report.html'), 'wb')
runner = HTMLTestRunner.HTMLTestRunner(
stream=fp,
title='QQ邮箱测试报告',
description='QQ邮箱测试报告详细信息'
)
runner.run(suites())
if __name__ == '__main__':
run()