自动化测试笔记

元素定位的八种方式是什么

1.id -- dr.find_element_by_id

2.name -- dr.find_element_by_name

3.class_name -- dr.find_element_by_class_name

4.link_text -- dr.find_element_by_link_text

5.partail_link_text -- dr.find_element_by_partial_link_text

6.tag_name -- dr.find_element_by_tag_name

7.xpath  -- dr.find_element_by_xpath()

8.css_selector -- dr.find_element_by_css_selector

用那个方法判断元素是否显示

is_displayed()

如何切换iframe

switch_to.frame(iframe)

切换到默认表单(主页面)

switch_to_default_content()

获取所有窗口:dr.window_handles

切换窗口:switch_to.window(windows[1])

鼠标悬停的方法是什么

#导入类:ActionChains()

#from selenium.webdriver import ActionChains

#move_to_element() --移动到指定的元素

#perform() -- 让悬停生效

如何定位下拉框的3种方法

1.select_by_index(索引位) ---根据索引选择

2.select_by_value(“value的值”) --根据value的属性值选择

3.select_by_visible_text(“课件的文本信息”) --根据可见的文本信息选择

如何获取弹出警告框的text

dr.switch_to.alert.text

dr.switch_to.alert.text 返回告警信息中的文字信息。

dr.switch_to.alert.accept()点击确认按钮。

dr.switch_to.alert.dismiss()点击取消按钮。

13、元素定位失败的原因

1)等待时间太短

2)元素不唯一

3)元素值是动态值

4)元素在另外一个表单

5)元素在另外一个页面

6)元素在前端是隐藏元素

selenium的工作原理是什么?

webdriver是按照server - client (C/S)的经典设计模式设计的。server端就是remote server,可以是任意的浏览器。当我们的脚本启动浏览器后,该浏览器就是remote server,  它的职责就是等待client发送请求并做出相应。client端简单说来就是我们的测试代码,测试代码中的一-些行为,转跳到特定的url等操作是以http请求的方式发送给被测试浏览器,并执行相应操作,并在response中返回执行状态、返回值等信息。




自动化测试怎么做?

自动化测试,是在手工测试之后进行的,是将手工测试用例转化为自动化测试脚本,用于回归测试。

首先,我们会对手工测试用例进行评估,一般选取正常场景的,复杂度不高,复用性高手工测试用例来转化为脚本,因为,用例越复杂,脚本越难维护。我们是用selenium工具来实现自动化,采用python脚本语言,基于unittest框架实现。首先,我们会构建测试套,测试套包含public部分(包括测试用例中公共的部分),testCases(存放测试用例),reports(存放测试报告),runAllCases(用于运行项目自动化用例),脚本调试完后,每天都会在jenkins(持续集式工具)中跑一次,跑完后生成html格式的自动化测试结果,然后,检查测试结果中有没有失败的脚本,如果失败,就定位一下脚本失败的原因,(失败的原因:

1)、可能是测试环境不稳定(加入隐式等待时间);

2)、开发修改了代码没通知到测试人员修改脚本;(找开发来确定下问题)

3)、开发引入了新的问题),如果是脚本问题,就修改脚本,如果是系统的问题,就提交问题单。

测试脚本用到了哪些技术?

参考答案:元素定位,表单切换,模块调用,获取指定文本信息等等,脚本是基于python自带的unittest单元测试框架,采用了模块化方式编写,把复用性高的元素封装到模块中,如果脚本需要用到对应的元素,直接调用就可以了,减少了冗余代码,如果元素发生变化,只需要调整元素封装的代码就可以了,提高测试用例的可维护性。

脚本怎么组织的?

参考答案:构建测试套,测试套包含public部分(包括测试用例中公共的部分),testCases(存放测试用例),reports(存放测试报告),runAllCases(用于运行项目自动化用例),测试脚本使用的是python的unittest单元测试框架组织管理,将所有测试脚本通过单元测试框架组织起来运行,这样做的好处是,维护起来方便,可以生成测试html格式的测试报告,报告包括:测试用例,通过数,失败数。

unittest框架内容:

unittest框架,由setUp()--环境预置,testCase()--- 测试用例 tearDown()----环境恢复,三大部分组成,unittest框架可组织执行测试用例,并且提供丰富的断言方法,判断测试用例是否通过,最终生成测试结果。

系统如果有验证码该怎么做?

找开发要么把验证码屏蔽掉,要么提供个万能验证码。

什么样的项目适合做自动化

  自动化测试,适用于项目周期长,版本多,界面元素稳定的项目。

为什么会生成HTML报告

    因为使用时导入的是html的包

xpath和CSS定位方式的区别:

1、语法不一样;

2、CSS定位比较稳定。

python3 的数据类型有哪些?

Number(数字)

String(字符串)

List(列表)

Tuple(元组)

Sets(集合)

Dictionary(字典)

不可变数据(四个):Number(数字)、String(字符串)、Tuple(元组)、Sets(集合);

可变数据(两个):List(列表)、Dictionary(字典)。

相关的编程问题:

如何用python来编程99乘法表:

for i in range(1,10);

  for j in range(1,i+1);

outputstr=str(i)+"*"+str(j)+"="+str(i*j)

print(outputstr,end="")

if i==j:

print("")

登录操作的自动化脚本:

(Public部分)

from selenium import webdriver

from time import sleep

Def login(self,username,password):

  self.dr=webdriver.chrome()        --初始化浏览器

  self.dr.get(‘http://www.so.com’) --打开浏览器

--元素定位:

Self.dr.find_element_by_xpath(‘//*[@id="user-login"]’).click()

Self.dr.find_element_by_name(‘username’).send_keys(‘admin’)

Self.dr.find_element_by_name(‘password’).send_keys(‘123456’)

Self.dr.find_element_by_class_name(‘us_submit’).click()

--响应时间

sleep(5)

--关闭浏览器

def logout(self):

    sleep(3)

    self.dr.quit()

testcase部分:

import unittest                --导入框架

from selenium import webriver  --导包

from time import sleep        --导入响应时间

import sys                    --导入公共类存放路径

Sys.path.append(‘E:/pycharm 5.0.3/ECshop/public’)

from public import *            --导入公共类

Class MyTestCase(unittest.testcase):  --定义框架

def setup(self):                      --环境预置

  login(self,’admin’,’123456’)

def test_登录(self):                --测试用例

  sleep(2)

self.assertEqual(true,true)            --添加断言

def teardown(self):                    --环境恢复

  sleep(3)

  self.dr.quit()

if_name_==’_main_’:                --内置变量,可用于表示当前模块的名字,也可以理解为                                                                          程序入口,不可被运行.

unittest.main()

《扩展知识》

如何保证测试用例的稳定性?

1.装饰器与出错重试机制保证稳定性:

  装饰器,表现形式为,在方法(或者类)的上面加上@xxx这样的语句,

  可以通过传入重试次数(times)和重试等待时间(wait_time),对  待测用例实行重试机制。

  在测试框架pytest里,已经实现了有关出错重试的策略,我们首先需要安装一个pytest-rerunfailures插件。

(A)如果你需要将此机制应用到所有的用例上,那么请在执行的时候使用如下命令(reruns是重试次数):

pytest --reruns 5

(B)如果你期望加上出错重试的等待时间,请使用如下命令(reruns-delay是等待时间):

pytest --reruns 5 --reruns-delay 1

(C)如果你只想对某几个测试用例应用重试策略,你可以使用装饰器:

@pytest.mark.flaky(reruns=5, reruns_delay=2)

.

2.测试用例分层机制保证可维护性.(比如模块封装调用等)

模块化程序设计的优点:

1.把一个多功能的复杂的程序划分为若干个简单的、功能单一的程序模块。使程序的结构层次一目了然, 提高了程序的阅读性和可靠性.

2.有利于程序的设计,调试,优化和分工.

可能涉及的相关词汇:

写脚本的love原则:locate(定位),operate(操作),verify(断言),except(异常处理)。

打开任意网页界面,按F12后显示网页源代码,可能涉及的词汇:

elements(元素),console(控制台),sources(源值),network(网络),performace(性能),memory(存储),application(应用程序),security(安全保护),audits(审核).

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 219,869评论 6 508
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,716评论 3 396
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 166,223评论 0 357
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 59,047评论 1 295
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 68,089评论 6 395
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,839评论 1 308
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,516评论 3 420
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,410评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,920评论 1 319
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 38,052评论 3 340
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,179评论 1 352
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,868评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,522评论 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,070评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,186评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,487评论 3 375
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,162评论 2 356

推荐阅读更多精彩内容