<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[hpwalk的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/hpwalk</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; hpwalk]]></copyright><item><title><![CDATA[Appium运行报错：java.lang.SecurityException: PID 14299 does not have permission android.permission]]></title><link>https://blog.youkuaiyun.com/hpwalk/article/details/109499280</link><guid>https://blog.youkuaiyun.com/hpwalk/article/details/109499280</guid><author>hpwalk</author><pubDate>Wed, 04 Nov 2020 21:11:36 +0800</pubDate><description><![CDATA[使用真机运行Python自动化脚本时报错。

报错内容：

java.lang.SecurityException: PID 14299 does not have permission android.permission.CLEAR_APP_USER_DATA to clear data of package XXX
 at com.android.server.am.ActivityManagerService.clearApplicationUserData(ActivityManagerSe...]]></description><category></category></item><item><title><![CDATA[自动化测试基础（1）——自动化测试基本原理及工具简介]]></title><link>https://blog.youkuaiyun.com/hpwalk/article/details/109299759</link><guid>https://blog.youkuaiyun.com/hpwalk/article/details/109299759</guid><author>hpwalk</author><pubDate>Mon, 26 Oct 2020 22:40:19 +0800</pubDate><description><![CDATA[一、自动化测试的定义

自动化测试，就是将手工测试转化为由程序或工具来执行的测试。

二、什么项目适合做自动化

1、测试任务明确，软件需求不会频繁变动；

2、由大量的回归测试任务，或者多平台执行相同测试的工作；

3、项目周期长；

4、软件的界面稳定，变动少；

三、自动化测试工具

1、Selenium

Selenium是目前开源主流的web自动化测试工具，支持多种编程语言（Java、Python、C#、Ruby等），它不是由单独的一个工具构成的，是由一些插件和类库组成，包括一系列的工具组件，支持]]></description><category></category></item><item><title><![CDATA[Selenium API操作—标题、控制浏览器、动作时间、鼠标键盘事件、控件属性获取、三种时间等待方法、多窗口切换、弹出框操作、截图操作、iframe控件操作、select类处理下拉框和时间选择类操作]]></title><link>https://blog.youkuaiyun.com/hpwalk/article/details/108025197</link><guid>https://blog.youkuaiyun.com/hpwalk/article/details/108025197</guid><author>hpwalk</author><pubDate>Mon, 17 Aug 2020 14:04:01 +0800</pubDate><description><![CDATA[1、验证信息获取

2、获取页面url

3、控制浏览器

（1）页面回退

（2）页面前进

（3）页面刷新

（4）控制浏览器尺寸大小

（5）最大化浏览器

4、动作事件

（1）输入内容

（2）清空输入的内容

（3）点击页面内容

5、控件 的属性获取

（1）获取控件尺寸大小

（2）获取控件的文本内容

（3）获取控件默认文案

（4）获取链接地址

6、判断控件是否加载成功

7、鼠标事件

（1）移动鼠标

（2）右击鼠标

（3）双击鼠标

8、键盘事件

电脑键盘中的按键，主要针对输]]></description><category></category></item><item><title><![CDATA[Selenium定位方式——id定位，name定位，class定位，link_text定位，partial_link_text定位，tag定位，xpath定位和css定位]]></title><link>https://blog.youkuaiyun.com/hpwalk/article/details/107951417</link><guid>https://blog.youkuaiyun.com/hpwalk/article/details/107951417</guid><author>hpwalk</author><pubDate>Sat, 15 Aug 2020 11:06:51 +0800</pubDate><description><![CDATA[1、通过id定位控件


from selenium import webdriver
import time
driver=webdriver.Chrome()#初始化对象
driver.get('http://www.baidu.com')#打开浏览器
driver.maximize_window()#浏览器最大化
time.sleep(2)#等待两秒
driver.find_element_by_id('kw')#定位控件

2、通过name定位控件


from selenium import w.]]></description><category></category></item><item><title><![CDATA[Python编程小练习——水仙花数]]></title><link>https://blog.youkuaiyun.com/hpwalk/article/details/107896234</link><guid>https://blog.youkuaiyun.com/hpwalk/article/details/107896234</guid><author>hpwalk</author><pubDate>Sun, 09 Aug 2020 16:48:25 +0800</pubDate><description><![CDATA['''打印出所有的"水仙花数"，所谓"水仙花数"是指一个三位数，
其各位数字立方和等于该数本身。
例如：153是一个"水仙花数"，因为153=1的三次方＋5的三次方＋3的三次方。'''
for i in range(100,1000):
    a=i%10#个位数
    b=i//10%10#十位数
    c=i//100#百位数
    if i==a**3+b**3+c**3:
        print(i)


...]]></description><category></category></item><item><title><![CDATA[Python编程小练习——输入三个整数x,y,z，请把这三个数由小到大输出]]></title><link>https://blog.youkuaiyun.com/hpwalk/article/details/107856057</link><guid>https://blog.youkuaiyun.com/hpwalk/article/details/107856057</guid><author>hpwalk</author><pubDate>Fri, 07 Aug 2020 10:03:06 +0800</pubDate><description><![CDATA[列表可以进行排序。


#输入三个整数x,y,z，请把这三个数由小到大输出。
l=[]
for i in range(3):
    x=int(input('请输入第{}个整数：'.format(i+1)))
    l.append(x)
l.sort()
print(l)



]]></description><category></category></item><item><title><![CDATA[Python编程小练习——输入某年某月某日，判断这一天是这一年的第几天？]]></title><link>https://blog.youkuaiyun.com/hpwalk/article/details/107844610</link><guid>https://blog.youkuaiyun.com/hpwalk/article/details/107844610</guid><author>hpwalk</author><pubDate>Thu, 06 Aug 2020 17:28:12 +0800</pubDate><description><![CDATA[将平年和闰年的月份及天数放入对应的字典中，根据年份，确定从哪个字典中取值，根据月份（key），累加计算该月之前的天数（value），最后再加上当月的天数即可。


'''输入某年某月某日，判断这一天是这一年的第几天？？'''    
run_dict={1:31,2:29,3:31,4:30,5:31,6:30,7:31,8:31,9:30,10:31,11:30,12:31}
ping_dict={1:31,2:28,3:31,4:30,5:31,6:30,7:31,8:31,9:30,10:31,11:]]></description><category></category></item><item><title><![CDATA[Python的一些问题及解决办法——SyntaxError:expected  an indented block]]></title><link>https://blog.youkuaiyun.com/hpwalk/article/details/107844374</link><guid>https://blog.youkuaiyun.com/hpwalk/article/details/107844374</guid><author>hpwalk</author><pubDate>Thu, 06 Aug 2020 16:58:21 +0800</pubDate><description><![CDATA[运行Python时，报错SyntaxError:expected an indented block。



检查代码的缩进是否正确。
]]></description><category></category></item><item><title><![CDATA[Python学习笔记——函数（内建函数、标准库函数、第三方库函数和用户自定义函数）、类、模块、库和包]]></title><link>https://blog.youkuaiyun.com/hpwalk/article/details/107832126</link><guid>https://blog.youkuaiyun.com/hpwalk/article/details/107832126</guid><author>hpwalk</author><pubDate>Thu, 06 Aug 2020 11:44:47 +0800</pubDate><description><![CDATA[一、函数

1、内建函数

输入dir(__builtins__)前后两个下划线，可以查看python异常名，属性名和内建函数；

输入help(函数名)，可查看函数使用方法。

（1）常用内建函数

1）abs（）

求一个数的绝对值。


&gt;&gt;&gt; a=-10
&gt;&gt;&gt; print(abs(a))
10

2）divmod（）

返回一个元组、同时计算商和余数。


&gt;&gt;&gt; a,b=divmod(10,3)
&gt;&gt;&gt; print(a,b)]]></description><category></category></item><item><title><![CDATA[Python学习笔记——数据类型（数字、字符串、列表、元组和字典）]]></title><link>https://blog.youkuaiyun.com/hpwalk/article/details/107772468</link><guid>https://blog.youkuaiyun.com/hpwalk/article/details/107772468</guid><author>hpwalk</author><pubDate>Wed, 05 Aug 2020 17:19:14 +0800</pubDate><description><![CDATA[一、数字

1、int整型

正或负数，不带小数点。a=1

2、float浮点型

整数部分和小数部分组成。a=1.1

科学计数法表示：9.8e3，e3代表10的3次方。

3、complex复数型

实部和虚部组成。a=1+2j，或a=complex(1，2)

复数分离实数部分和虚数部分：

a.real()；a.imag()；

复数的共轭：

a.conjugate();

4、布尔类型

1True，0False；

二、字符串

字符串是由字母、数字、下划线组成的一串字符，可以使用单引号、双]]></description><category></category></item><item><title><![CDATA[Python学习笔记——变量、关键字、表达式、赋值、语句、注释、运算符和缩进]]></title><link>https://blog.youkuaiyun.com/hpwalk/article/details/107767978</link><guid>https://blog.youkuaiyun.com/hpwalk/article/details/107767978</guid><author>hpwalk</author><pubDate>Mon, 03 Aug 2020 16:43:30 +0800</pubDate><description><![CDATA[一、变量

Python的变量不需要声明，直接定义即可，Python会在初始化的时候决定变量类型，使用“=”来进行初始化和赋值操作，通过type(变量名)来查看变量类型。

1、Python变量命名规则

（1）必须是字母、数字或下划线；

（2）首字母是字母或下划线；

（3）变量名大小写敏感；

Python中双下划线开头的变量名是私有的；且变量命名尽量做到“见名知意”。

2、Python变量命名方式

（1）驼峰式：stuName

（2）下划线式：stu_name

二、关键字

关键字是Pyth]]></description><category></category></item><item><title><![CDATA[Python学习笔记——文件操作 （打开、读取、写入文件、with语句和文件操作相关函数）]]></title><link>https://blog.youkuaiyun.com/hpwalk/article/details/107638869</link><guid>https://blog.youkuaiyun.com/hpwalk/article/details/107638869</guid><author>hpwalk</author><pubDate>Tue, 28 Jul 2020 16:59:30 +0800</pubDate><description><![CDATA[1、打开文件

使用内建函数open()打开一个文件：

handle=open(filename，mode=’r'，，buffering=-1，encoding=’utf-8‘)

filename是文件名，可以是绝对路径或相对路径，绝对路径可能需要加上原始字符串r：


handle=open（r‘E：\app\text.txt’）

handel是一个文件句柄，是一个可迭代对象，名字不固定，可以直接使用for循环按行读取文件内容：


for line in handle:
	print(line)
]]></description><category></category></item><item><title><![CDATA[Python学习笔记——循环结构（for循环，while循环，循环中的break、continue、pass和else）]]></title><link>https://blog.youkuaiyun.com/hpwalk/article/details/107637352</link><guid>https://blog.youkuaiyun.com/hpwalk/article/details/107637352</guid><author>hpwalk</author><pubDate>Tue, 28 Jul 2020 16:04:59 +0800</pubDate><description><![CDATA[1、for循环

（1）语法

for循环称之为遍历，接受可迭代对象或迭代器作为参数，每次迭代其中的一个元素。

语法：


for iter_var in iterable_object：
	代码块

iter_var：元素，变量；

iterable_object：可迭代对象，即可以按次序迭代、可循环的对象：String、List、Tuple、字典、文件等。

for循环获取可迭代对象，一次性产生一个迭代器，依次取迭代器中的值，执行语句序列，知道没有元素可取就结束循环。

判断某个对象是否是迭代器，是否]]></description><category></category></item><item><title><![CDATA[Python学习笔记——条件结构（if语句，if-else语句，if-elif-else语句、条件嵌套和专门的条件表达式）]]></title><link>https://blog.youkuaiyun.com/hpwalk/article/details/107632417</link><guid>https://blog.youkuaiyun.com/hpwalk/article/details/107632417</guid><author>hpwalk</author><pubDate>Tue, 28 Jul 2020 11:42:23 +0800</pubDate><description><![CDATA[1、if语句

语法：


if 条件表达式：

 代码块

条件表达式：比较运算符、成员运算符、逻辑运算符；条件为True时，执行代码块的内容；

2、else语句

语法：


if 条件表达式：
	代码块
else：
	代码块


3、elif语句

语法：


if 条件表达式：
	代码块
elif 条件表达式：
	代码块
。。。
else：
	代码块

代码示例：


k=input('imput the index of shape:')
if k=='1':
	print('corcle'..]]></description><category></category></item><item><title><![CDATA[Python基础——异常分类与异常的处理（try-except语句）]]></title><link>https://blog.youkuaiyun.com/hpwalk/article/details/107630385</link><guid>https://blog.youkuaiyun.com/hpwalk/article/details/107630385</guid><author>hpwalk</author><pubDate>Tue, 28 Jul 2020 10:58:57 +0800</pubDate><description><![CDATA[异常=程序出错，错误分为程序错误、运行时刻错误和逻辑错误。

Python中每一个一场都是类的实例，用异常对象（exception object）来表示异常情况。

一、异常分类

dir(_builtins_)查看异常类。

类名
			描述
		BaseException
			所有异常的基类
		Exception
			常规异常的基类
		AttributeError
			对象不存在此属性
		IndexError
			序列中无此索引
		IOError
			输入/输出操作失败
		Keybo]]></description><category></category></item><item><title><![CDATA[Linux下安装配置MySQL8.0——安装MySQL、修改密码、添加软链接、设置远程连接]]></title><link>https://blog.youkuaiyun.com/hpwalk/article/details/107606160</link><guid>https://blog.youkuaiyun.com/hpwalk/article/details/107606160</guid><author>hpwalk</author><pubDate>Mon, 27 Jul 2020 11:05:17 +0800</pubDate><description><![CDATA[一、下载mysql

MySQL官网



二、查看Linux自带的mysql并移除


[root@localhost opt]# rpm -qa|grep mysql
mysql-community-release-el7-5.noarch
[root@localhost opt]# rpm -e --nodeps mysql-community-release-el7-5.noarch

三、新建mysql用户和用户组，并设置用户密码


[root@localhost opt]# groupadd ]]></description><category></category></item><item><title><![CDATA[MySQL数据库操作和SQL基本命令——增删查改数据库、增删查改数据表、数据表的聚合函数、排序、分组、连接查询和子查询]]></title><link>https://blog.youkuaiyun.com/hpwalk/article/details/107358814</link><guid>https://blog.youkuaiyun.com/hpwalk/article/details/107358814</guid><author>hpwalk</author><pubDate>Thu, 23 Jul 2020 15:01:55 +0800</pubDate><description><![CDATA[一、数据库

数据库，实际上就是文件集合，是存储数据的仓库，本质上就是一个文件系统。它按照特定的格式把数据存储起来，用户可以对数据进行增删查改操作。



k
]]></description><category></category></item><item><title><![CDATA[测试用例设计方法——等价类划分法、边界值分析法、场景法、判定表、因果图、错误推测法和正交试验法]]></title><link>https://blog.youkuaiyun.com/hpwalk/article/details/107330892</link><guid>https://blog.youkuaiyun.com/hpwalk/article/details/107330892</guid><author>hpwalk</author><pubDate>Tue, 14 Jul 2020 11:49:53 +0800</pubDate><description><![CDATA[一、等价类划分

定义：依据需求将输入划分成若干个等价类，从等价类中选定一个测试用例，如果该用例通过，则表明整个等价类通过。

适用范围：适用于有无限多种输入。

目的：使用较少的测试用例尽可能多的将功能覆盖。

有效等价类：有意义的输入构成的集合，对需求规格说明书来说是合法的。

无效等价类：不满足需求的输入。

例如：学生成绩录入系统，分数X为0到100的整数。

有效等价类：0≤X≤100（50）

无效等价类：X≤0（-5），X≥100（200）

如果没有整数要求，还要考虑小数，非数字（字母，汉字]]></description><category></category></item><item><title><![CDATA[软件测试生命周期——需求分析、测试计划、测试用例设计、测试执行和测试评估]]></title><link>https://blog.youkuaiyun.com/hpwalk/article/details/107310481</link><guid>https://blog.youkuaiyun.com/hpwalk/article/details/107310481</guid><author>hpwalk</author><pubDate>Mon, 13 Jul 2020 16:09:20 +0800</pubDate><description><![CDATA[一、需求分析

1、测试人员要充分了解需求，得出测试点和测试需求。

2、需求评审会议

在需求评审会议上，测试人员要确认每个功能的异常状态、数量以及如何转化，要多问为什么（用户是谁，软件的整体框架，要解决什么问题，变更需求影响的点有哪些，是否需要确认等）。

目的：了解产品，为写测试用例提供支持，为提bug找依据。

人员：需求分析师/产品经理(BA/PM)主讲，开发人员和测试人员参加

文档：产品需求文档

流程：BA/PM整理出产品需求文档后，开发人员和测试人员提前学习，在需求评审会议上，先是需求人员]]></description><category></category></item><item><title><![CDATA[软件测试理论基础——软件测试的定义、分类、原则、策略和模型]]></title><link>https://blog.youkuaiyun.com/hpwalk/article/details/107297602</link><guid>https://blog.youkuaiyun.com/hpwalk/article/details/107297602</guid><author>hpwalk</author><pubDate>Sun, 12 Jul 2020 13:51:17 +0800</pubDate><description><![CDATA[一、软件测试定义

经典定义：软件测试是为了发现错误而操作程序的过程。

定义：通过人工或自动的方式，检测软件的使用，发现需求文档和程序中的错误、缺陷和不合理的地方，并验证软件是否达到规定的需求。（验证依据是需求文档）

目标：对软件的质量进行全面的评估和测试，使用户的体验更好，使软件的质量更高。

二、软件测试方法

1、按开发阶段分

单元测试：又称模块测试，对软件的组成单元进行测试。（模块，即代码片段，是软件测试的最小单元）。

  目的：检测组成软件基本单元的准确性。

集成测试：又称联合测试（..]]></description><category></category></item></channel></rss>