元素定位的八种办法是什么
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(审阅).
作者:永杰gg
链接:https://www.jianshu.com/p/397c04267764
来源:简书
著作权归作者一切。商业转载请联络作者获得授权,非商业转载请注明出处。