- 博客(28)
- 资源 (1)
- 收藏
- 关注
原创 Cucumber是如何工作的
Cucumber使用自然语言来编写测试用例(通常是英语,但也可以是其它语言),由Cucumber编写的自动化测试用例可以被团队所有成员读懂,这将大大降低需求转化为实际功能的过程中可能产生的误解,从而提高沟通效率和降低开发成本。简单来说,就是测试人员通过自然语言编写测试用例,然后将测试用例中的步骤与实际的代码进行关联,而代码会调用自动化测试库的功能以及其它工具和库来解释具体的测试步骤,最后自动化测试库会针对系统完成或者模拟具体的测试步骤。它主要用于描述系统行为和用户故事,以及与之相关的测试场景和步骤。
2023-07-05 11:53:13 909
原创 Selenium4之CDP
相较于以前的版本,Selenium4除了推出了relative Locators,还有一个比较重要的更新就是对于Chrome Dev Tools Protocol的支持。
2022-11-21 16:07:31 2255 2
原创 Selenium4之Relative Locators
在Selenium4发布之前,Locator包括class name, css selector, id, name, link text, partial link text, tag name和xpath。坦白说,我的理解是,relative locators的出现,并不是解决能或是不能的问题,而是解决难或是易的问题。relative locators每个单独的方法都显得不是实用和必要,但是通过链式的组合定位,确实让一些原来难以定位的元素变得更加容易定位,并且可以做到更加优雅。确实为我们在定位元素时提供
2022-11-13 22:32:53 411
原创 Property和Attribute的区别
这个标题可能具有一定的误导性,我本意是想澄清下webdriver里的get_attribute()和get_property()的区别。但是webdriver本身也是基于HTML和Javascript的DOM树来进行操作和互动的,所以我索性就用了现在的标题。我曾经试图找出列有所有支持的Properties的文档,但总是发现搜索到的Properties似乎也不是全部。无奈之下,只能使用JS的dir()方法,期望可以尽可能的发现所有的Properties。返回元素的指定property的值;
2022-11-06 14:15:16 916
原创 Postman模拟Selenium Client和Web driver的交互
因为在早期,其实浏览器的Driver都是由Selenium来提供的,浏览器的访问接口也并不统一,所以需要使用JSON Wire Protocol来负责在Selenium Client和各Browser Driver之间传递数据。ChromeDriver在收到这个request后,就会将指令发送给与Driver对应的浏览器,一个新的浏览器实例会被启动,并返回创建好的session信息,此处,sessionID至关重要,因为在后面对浏览器的操作中必须用到。Chrome driver使用的端口其实是随机的。
2022-11-03 22:30:10 555 2
原创 Git常用命令
1. 想要在操作系统中安装GIT2. 想要配置Git3. 想要克隆远程仓库到本地4. 想要创建和删除分支5. 想要将代码改动提交到暂存区6. 想要将暂存区的内容提交给本地仓库7. 想要获取最新的代码8. 想要将本地分支的代码改动推送给远程分支9. 想要放弃本地修改10. 想要撤销当前的git add操作11. 想要撤销当前的git commit操作12. 想要恢复工作区的代码改动(已被git reset --hard HEAD^撤销)13. 想要合并代码
2022-10-22 15:38:16 617
原创 Python设计模式 - 工厂模式
所谓工厂模式,无非就是指向工厂一样去生产产品,只不过这么里的产品不是真实的产品,而是类的实例;而工厂也不是真的工厂,而是一个(工厂)类,这个类提供了获取各种类实例的方法。采用工厂模式,实现了对象创建和类实现两者之间的松耦合。调用端通过固定的接口来获取对象实例,而无需关心创建实例的复杂性。从而降低了代码调用和维护的复杂度。简单工厂模式class Phone(object): def...
2020-03-02 16:28:08 219
原创 Python设计模式 - 单例模式
所谓单例模式,即确保类有且只有一个特定类型的对象,并提供全局访问。对于单例,Python是有其特殊性的,在默认的情况下,所有的模块都是单例的。这是由python导入机制(import)决定的:a. 检查一个python模块是否已经被import。b. 如果已经导入,那么返回该模块的对象。如果没有导入,就导入模块,并实例化。这意味着,如果存在多次导入,那么也只能被多次初始化,而是返回...
2020-02-29 17:51:57 333
原创 Python之lambda, filter, map, reduce
闲话不表,直接入正题吧。lambdalambda 可以被看作匿名函数,也就是一种没有用到函数标识符def的函数。def add(a, b): return a + bif __name__ == "__main__": a1 = lambda x, y: x + y print(a1(5, 6)) a2 = add print(a2(5,...
2020-02-28 13:00:29 285
原创 Python类 init__和 _new__方法的区别
每个学习Python的都必须知道__init__和__new__的区别,要不然很难说你了解Python类。__init__ : 负责类的初始化class Example(object): def __init__(self): print "This is 'init' method"Example()输出:This is 'init' method_...
2020-02-27 21:39:29 223
原创 聊聊Python的装饰器(Decorators)
为了更好的理解Decorators(装饰器),首先要理解什么是function(函数/方法)? 函数就是 一段代码块, 它基于给定的传入参数,返回有意义的值,或者执行特定的操作。比如:def test_add(a, b): return a + b在Python中, 函数也是一种对象,所以本身也可以作为函数的传入参数来使用,这就为装饰器的产生提供了必要的条件, Decorato...
2020-02-27 15:52:39 229
原创 深入理解 _init__.py的作用
很多初学者都会使用PyCharm作为自己学习Python的IDE。 每当创建一个Python Package(Python包)的时候, Pycharm就会创建一个文件夹,并且在文件夹内自动生成一个__init__.py文件。但你是否真正了解__init__.py文件的作用呢? 让我们今天就来扒一扒。Python代码情况如下:test_package是一个简单的Python包, 包...
2020-02-27 15:33:45 1349
原创 Be Pythonic
一直想写些东西,却一直没有付诸实践。今天也算是心血来潮吧,写些关于Pythonic的话题,文章的受众只能是一些Python新人。这里所说的新人包括两类: 第一类是完完全全的新人,第二类嘛,可能已经具备了一定的编程能力,只是刚刚接触Python而已。但无论如何,Python新人都希望自己的代码尽可能的Python化。今天就来说说Pythonic的Python语法,与其它语言相比而言,也许会让你赏...
2020-02-27 15:06:54 263
原创 说一说Generator和Iterator
On the way of Pythonic...Generator和iterator相伴相生,却不尽相同。生成器(generator)generator通常也是可迭代的,但并非是一次性生成所有迭代成员的列表,而是在循环的过程中通过next()方法不断获取后续元素。所以generator的存在可以节省内存资源(假如需要迭代一个包含海量数据的列表,那所占用的内存也会是不可忽略的)...
2020-02-27 14:29:46 518
转载 Appium的一些概念
1. 客户端/服务器架构Appium 的核心是暴露 REST API 的网络服务器。它接受来自客户端的连接,监听命令并在移动设备上执行,答复表示执行结果的 HTTP 响应。客户端/服务器架构实际给予了许多可能性:我们可以使用任何有 http 客户端 API 的语言编写我们的测试代码,不过选一个 Appium 客户端程序库 用更容易。我们可以把服务器放在另一台机器上,而不是执行测试的机器。我们可
2018-04-18 21:31:06 941
原创 Appium - 如何提高查找元素的性能
本文基于的Automation Engine是XCUITest for iOS。iOS11发布以后,我意识到我不得不升级了, 毕竟让用例继续在iOS9上执行并不是一个好的选择。于是,我花了一段时间,升级到了python3 + Appium1.7.2 + Xcode9.2, 当然过程不会像我描述的那样简单。当我看到用例终于可以运行在iOS11.2上时,我觉得一切都是值得的。可是,我遇到了
2018-04-18 00:51:14 3925
原创 Charles抓取iOS移动设备上的https包
以Mac OS为例:1. 在Mac中下载并安装Charles,保持默认设置安装2. 打开Mac的网络,获取Mac当前IP3. 在iPad的设置/无线局域网中设置网络代理: 服务器: 当前Mac的IP地址 端口: 88884. 从Mac打开Charles: (1) 弹出允许访问的窗口时,务必选择allow; (2) 进入Proxy/Proxy Settings/Proxies, ...
2018-04-09 20:53:44 956
原创 WEB性能测试之JMeter
本文简单介绍了如何使用JMeter进行性能测试,主要包括JMeter脚本录制,Webdriver插件,服务器插件,以及数据库性能测试等。
2015-04-06 16:08:05 3238
原创 How to access JIRA in your Python program
Access JIRA in your Python program
2015-03-28 11:32:33 1377
原创 Three ways of dealing with Alert in automation(Python+Webdriver)
There are 3 ways of dealing with alert in our automation (I don't think there are only 3 ways).The method of selenium:driver = webdriver.Chrome()driver.get("http://www.baidu.com")driver.exec
2015-01-28 16:48:50 742
翻译 Python + Webdriver + Browsermob Proxy 环境搭建
我们假定python + Webdriver环境已经完成,主要是介绍Browsermob-proxy的环境搭建1. 下载Browsermob-proxy: https://github.com/webmetrics/browsermob-proxy/downloads 如果你能找到“..\bin\browsermob-proxy.bat“这个文件,那么可以确定你下载对了。
2014-12-19 17:56:31 7401
转载 使用Maven搭建Eclipse+Selenium_Webdriver+Testng+Junit自动化测试环境
一、 安装JDK ,然后配置环境变量1. 安装好后,直接右击【我的电脑】--【属性】,在弹出的对话框中选择【高级系统设置】2. 在弹出的对话框中选择【高级】选项卡下的【环境变量】3. 在弹出的对话框,单击【系统变量】下的【新建】按钮,在弹出的对话框中填入变量名 JAVA_HOME ,变量值:C:\Program Files\Java\jdk1.7.0_044. 按照同样的方式
2014-02-07 20:18:40 1601
原创 Selenium WebDriver之JavaScript
WebDriver提供了方法来同步/异步执行JavaScript代码,这是因为JavaScript可以完成一些WebDriver本身所不能完成的功能,从而让WebDriver更加灵活和强大。本文中所提到的都是JAVA代码。 1. 在WebDriver中如何执行JavaScript代码 WebDriver driver = new FirefoxDriver(); J
2014-02-07 17:33:22 1817 1
原创 C#中关键字using的三种使用方法
Using的重要性对于c#来说,就等同于java中的关键字import。但是在c#中,using其实拥有多种功能。1. 引用命名空间使用方法:using namespace;Namespace是所要引入的命名空间的名称。2. 创
2011-10-07 18:45:21 1250
原创 SQL Server中 JOIN的分类和用法
JOIN和WHERE一样都可以实现表与表之间的连接,所不同的是JOIN是显式连接,而WHERE则是隐式连接。不过,使用JOIN的显式连接方式更能体现数据库的语言规范,并且也易于检查语句中的连接条件是否正确。SQLServer本身,比如在视图中,也是使用JOIN而不是WHERE。
2011-09-14 16:40:14 1646
Python Flask文件下载示例 - excel,pdf, txt, csv
2023-04-30
笔试题 - 算法,API,HTML,简单程序设计
2023-04-29
通用浏览器的工作流程概述
2023-04-29
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人