找回密码
 立即注册

推荐阅读

  • 便民服务
  • 关注我们
  • 社区新手
<article data-content="[{&quot;type&quot;:&quot;block&quot;,&quot;id&quot;:&quot;3060-1621846615933&quot;,&quot;name&quot;:&quot;paragraph&quot;,&quot;data&quot;:{},&quot;nodes&quot;:[{&quot;type&quot;:&quot;text&quot;,&quot;id&quot;:&quot;p5PQ-1621846617594&quot;,&quot;leaves&quot;:[{&quot;text&quot;:&quot;第 11讲  python 中 UI 自动化&quot;,&quot;marks&quot;:[]}]}],&quot;state&quot;:{}},{&quot;type&quot;:&quot;block&quot;,&quot;id&quot;:&quot;VmnA-1662033050526&quot;,&quot;name&quot;:&quot;paragraph&quot;,&quot;data&quot;:{},&quot;nodes&quot;:[{&quot;type&quot;:&quot;text&quot;,&quot;id&quot;:&quot;A7Ys-1662033050047&quot;,&quot;leaves&quot;:[{&quot;text&quot;:&quot;1、什么是UI自动化&quot;,&quot;marks&quot;:[]}]}],&quot;state&quot;:{}},{&quot;type&quot;:&quot;block&quot;,&quot;id&quot;:&quot;GCO4-1662033050527&quot;,&quot;name&quot;:&quot;paragraph&quot;,&quot;data&quot;:{},&quot;nodes&quot;:[{&quot;type&quot;:&quot;text&quot;,&quot;id&quot;:&quot;wfzn-1662033050049&quot;,&quot;leaves&quot;:[{&quot;text&quot;:&quot;原本用手工操作ui页面的方式,现在用代码去实现自动化操作的方式&quot;,&quot;marks&quot;:[]}]}],&quot;state&quot;:{}},{&quot;type&quot;:&quot;block&quot;,&quot;id&quot;:&quot;H2cy-1662033050528&quot;,&quot;name&quot;:&quot;paragraph&quot;,&quot;data&quot;:{},&quot;nodes&quot;:[{&quot;type&quot;:&quot;text&quot;,&quot;id&quot;:&quot;cc3z-1662033050051&quot;,&quot;leaves&quot;:[{&quot;text&quot;:&quot;2、UI自动化的优点&quot;,&quot;marks&quot;:[]}]}],&quot;state&quot;:{}},{&quot;type&quot;:&quot;block&quot;,&quot;id&quot;:&quot;HuK6-1662033050529&quot;,&quot;name&quot;:&quot;paragraph&quot;,&quot;data&quot;:{},&quot;nodes&quot;:[{&quot;type&quot;:&quot;text&quot;,&quot;id&quot;:&quot;LQpO-1662033050053&quot;,&quot;leaves&quot;:[{&quot;text&quot;:&quot;1)解决重复性功能测试和验证&quot;,&quot;marks&quot;:[]}]}],&quot;state&quot;:{}},{&quot;type&quot;:&quot;block&quot;,&quot;id&quot;:&quot;5cDP-1662033050530&quot;,&quot;name&quot;:&quot;paragraph&quot;,&quot;data&quot;:{},&quot;nodes&quot;:[{&quot;type&quot;:&quot;text&quot;,&quot;id&quot;:&quot;qZMz-1662033050055&quot;,&quot;leaves&quot;:[{&quot;text&quot;:&quot;2)减少回归测试的人力 时间&quot;,&quot;marks&quot;:[]}]}],&quot;state&quot;:{}},{&quot;type&quot;:&quot;block&quot;,&quot;id&quot;:&quot;0QZB-1662033050531&quot;,&quot;name&quot;:&quot;paragraph&quot;,&quot;data&quot;:{},&quot;nodes&quot;:[{&quot;type&quot;:&quot;text&quot;,&quot;id&quot;:&quot;Dd31-1662033050058&quot;,&quot;leaves&quot;:[{&quot;text&quot;:&quot;3)减少回归测试时漏测的现象&quot;,&quot;marks&quot;:[]}]}],&quot;state&quot;:{}},{&quot;type&quot;:&quot;block&quot;,&quot;id&quot;:&quot;8utj-1662033050532&quot;,&quot;name&quot;:&quot;paragraph&quot;,&quot;data&quot;:{},&quot;nodes&quot;:[{&quot;type&quot;:&quot;text&quot;,&quot;id&quot;:&quot;NC2h-1662033050060&quot;,&quot;leaves&quot;:[{&quot;text&quot;:&quot;3、什么样的项目适合做UI自动化&quot;,&quot;marks&quot;:[]}]}],&quot;state&quot;:{}},{&quot;type&quot;:&quot;block&quot;,&quot;id&quot;:&quot;F5ii-1662033050533&quot;,&quot;name&quot;:&quot;paragraph&quot;,&quot;data&quot;:{},&quot;nodes&quot;:[{&quot;type&quot;:&quot;text&quot;,&quot;id&quot;:&quot;GzeT-1662033050062&quot;,&quot;leaves&quot;:[{&quot;text&quot;:&quot;1)需要比较稳定,需求变更不频繁&quot;,&quot;marks&quot;:[]}]}],&quot;state&quot;:{}},{&quot;type&quot;:&quot;block&quot;,&quot;id&quot;:&quot;nkSH-1662033050534&quot;,&quot;name&quot;:&quot;paragraph&quot;,&quot;data&quot;:{},&quot;nodes&quot;:[{&quot;type&quot;:&quot;text&quot;,&quot;id&quot;:&quot;E72p-1662033050064&quot;,&quot;leaves&quot;:[{&quot;text&quot;:&quot;2)项目周期比较长&quot;,&quot;marks&quot;:[]}]}],&quot;state&quot;:{}},{&quot;type&quot;:&quot;block&quot;,&quot;id&quot;:&quot;U6xt-1662033050535&quot;,&quot;name&quot;:&quot;paragraph&quot;,&quot;data&quot;:{},&quot;nodes&quot;:[{&quot;type&quot;:&quot;text&quot;,&quot;id&quot;:&quot;Ozyb-1662033050066&quot;,&quot;leaves&quot;:[{&quot;text&quot;:&quot;3)UI空间和页面元素不能频繁变更&quot;,&quot;marks&quot;:[]}]}],&quot;state&quot;:{}},{&quot;type&quot;:&quot;block&quot;,&quot;id&quot;:&quot;vfTb-1662033050536&quot;,&quot;name&quot;:&quot;paragraph&quot;,&quot;data&quot;:{},&quot;nodes&quot;:[{&quot;type&quot;:&quot;text&quot;,&quot;id&quot;:&quot;7ErD-1662033050068&quot;,&quot;leaves&quot;:[{&quot;text&quot;:&quot;4、UI自动化的应用场景&quot;,&quot;marks&quot;:[]}]}],&quot;state&quot;:{}},{&quot;type&quot;:&quot;block&quot;,&quot;id&quot;:&quot;fVdH-1662033050537&quot;,&quot;name&quot;:&quot;paragraph&quot;,&quot;data&quot;:{},&quot;nodes&quot;:[{&quot;type&quot;:&quot;text&quot;,&quot;id&quot;:&quot;L6Ch-1662033050070&quot;,&quot;leaves&quot;:[{&quot;text&quot;:&quot;登录==》加入购物车==》下单  手工操作&quot;,&quot;marks&quot;:[]}]}],&quot;state&quot;:{}},{&quot;type&quot;:&quot;block&quot;,&quot;id&quot;:&quot;IqHE-1662033050538&quot;,&quot;name&quot;:&quot;paragraph&quot;,&quot;data&quot;:{},&quot;nodes&quot;:[{&quot;type&quot;:&quot;text&quot;,&quot;id&quot;:&quot;soEc-1662033050072&quot;,&quot;leaves&quot;:[{&quot;text&quot;:&quot;==》可以用自动化去操作==》自动化回归测试&quot;,&quot;marks&quot;:[]}]}],&quot;state&quot;:{}},{&quot;type&quot;:&quot;block&quot;,&quot;id&quot;:&quot;4nS6-1662033050539&quot;,&quot;name&quot;:&quot;paragraph&quot;,&quot;data&quot;:{},&quot;nodes&quot;:[{&quot;type&quot;:&quot;text&quot;,&quot;id&quot;:&quot;4bUx-1662033050074&quot;,&quot;leaves&quot;:[{&quot;text&quot;:&quot;5、UI自动化的覆盖率&quot;,&quot;marks&quot;:[]}]}],&quot;state&quot;:{}},{&quot;type&quot;:&quot;block&quot;,&quot;id&quot;:&quot;LUUy-1662033050540&quot;,&quot;name&quot;:&quot;paragraph&quot;,&quot;data&quot;:{},&quot;nodes&quot;:[{&quot;type&quot;:&quot;text&quot;,&quot;id&quot;:&quot;YVLx-1662033050076&quot;,&quot;leaves&quot;:[{&quot;text&quot;:&quot;1)用例数量的覆盖率:站当前迭代用例总数的20%  ==》是把主流程的用例转化为自动化&quot;,&quot;marks&quot;:[]}]}],&quot;state&quot;:{}},{&quot;type&quot;:&quot;block&quot;,&quot;id&quot;:&quot;Gr45-1662033050541&quot;,&quot;name&quot;:&quot;paragraph&quot;,&quot;data&quot;:{},&quot;nodes&quot;:[{&quot;type&quot;:&quot;text&quot;,&quot;id&quot;:&quot;jTYJ-1662033050078&quot;,&quot;leaves&quot;:[{&quot;text&quot;:&quot;2)场景覆盖率:70-80%&quot;,&quot;marks&quot;:[]}]}],&quot;state&quot;:{}},{&quot;type&quot;:&quot;block&quot;,&quot;id&quot;:&quot;kvuh-1662033050542&quot;,&quot;name&quot;:&quot;paragraph&quot;,&quot;data&quot;:{},&quot;nodes&quot;:[{&quot;type&quot;:&quot;text&quot;,&quot;id&quot;:&quot;lPlj-1662033050080&quot;,&quot;leaves&quot;:[{&quot;text&quot;:&quot;6、目前市面上主流程的ui自动化工具&quot;,&quot;marks&quot;:[]}]}],&quot;state&quot;:{}},{&quot;type&quot;:&quot;block&quot;,&quot;id&quot;:&quotrEf-1662033050543&quot;,&quot;name&quot;:&quot;paragraph&quot;,&quot;data&quot;:{},&quot;nodes&quot;:[{&quot;type&quot;:&quot;text&quot;,&quot;id&quot;:&quot;m3pn-1662033050082&quot;,&quot;leaves&quot;:[{&quot;text&quot;:&quot;1)python +selenium (要学习)&quot;,&quot;marks&quot;:[]}]}],&quot;state&quot;:{}},{&quot;type&quot;:&quot;block&quot;,&quot;id&quot;:&quot;Tywd-1662033050544&quot;,&quot;name&quot;:&quot;paragraph&quot;,&quot;data&quot;:{},&quot;nodes&quot;:[{&quot;type&quot;:&quot;text&quot;,&quot;id&quot;:&quot;nDvc-1662033050084&quot;,&quot;leaves&quot;:[{&quot;text&quot;:&quot;2)java +selenium&quot;,&quot;marks&quot;:[]}]}],&quot;state&quot;:{}},{&quot;type&quot;:&quot;block&quot;,&quot;id&quot;:&quot;xHc7-1662033050545&quot;,&quot;name&quot;:&quot;paragraph&quot;,&quot;data&quot;:{},&quot;nodes&quot;:[{&quot;type&quot;:&quot;text&quot;,&quot;id&quot;:&quot;KQaA-1662033050086&quot;,&quot;leaves&quot;:[{&quot;text&quot;:&quot;3)rebot framework +selenium2library&quot;,&quot;marks&quot;:[]}]}],&quot;state&quot;:{}},{&quot;type&quot;:&quot;block&quot;,&quot;id&quot;:&quot;XAle-1662033050546&quot;,&quot;name&quot;:&quot;paragraph&quot;,&quot;data&quot;:{},&quot;nodes&quot;:[{&quot;type&quot;:&quot;text&quot;,&quot;id&quot;:&quot;p59S-1662033050088&quot;,&quot;leaves&quot;:[{&quot;text&quot;:&quot;7、UI自动化的框架&quot;,&quot;marks&quot;:[]}]}],&quot;state&quot;:{}},{&quot;type&quot;:&quot;block&quot;,&quot;id&quot;:&quot;ttDg-1662033050547&quot;,&quot;name&quot;:&quot;paragraph&quot;,&quot;data&quot;:{},&quot;nodes&quot;:[{&quot;type&quot;:&quot;text&quot;,&quot;id&quot;:&quotK2l-1662033050090&quot;,&quot;leaves&quot;:[{&quot;text&quot;:&quot;python +selenium +unittest +po 分层&quot;,&quot;marks&quot;:[]}]}],&quot;state&quot;:{}},{&quot;type&quot;:&quot;block&quot;,&quot;id&quot;:&quot;wRvw-1662033050548&quot;,&quot;name&quot;:&quot;paragraph&quot;,&quot;data&quot;:{},&quot;nodes&quot;:[{&quot;type&quot;:&quot;text&quot;,&quot;id&quot;:&quot;bEU1-1662033050092&quot;,&quot;leaves&quot;:[{&quot;text&quot;:&quot;8、selenium 的优点 和缺点&quot;,&quot;marks&quot;:[]}]}],&quot;state&quot;:{}},{&quot;type&quot;:&quot;block&quot;,&quot;id&quot;:&quot;ubXN-1662033050549&quot;,&quot;name&quot;:&quot;paragraph&quot;,&quot;data&quot;:{},&quot;nodes&quot;:[{&quot;type&quot;:&quot;text&quot;,&quot;id&quot;:&quot;HBC6-1662033050094&quot;,&quot;leaves&quot;:[{&quot;text&quot;:&quot;1)支持多平台 windows linux&quot;,&quot;marks&quot;:[]}]}],&quot;state&quot;:{}},{&quot;type&quot;:&quot;block&quot;,&quot;id&quot;:&quot;4fEI-1662033050550&quot;,&quot;name&quot;:&quot;paragraph&quot;,&quot;data&quot;:{},&quot;nodes&quot;:[{&quot;type&quot;:&quot;text&quot;,&quot;id&quot;:&quot;KE6h-1662033050096&quot;,&quot;leaves&quot;:[{&quot;text&quot;:&quot;2)支持多浏览器 chrome 火狐 ie&quot;,&quot;marks&quot;:[]}]}],&quot;state&quot;:{}},{&quot;type&quot;:&quot;block&quot;,&quot;id&quot;:&quot;KknC-1662033050551&quot;,&quot;name&quot;:&quot;paragraph&quot;,&quot;data&quot;:{},&quot;nodes&quot;:[{&quot;type&quot;:&quot;text&quot;,&quot;id&quot;:&quot;KCmS-1662033050098&quot;,&quot;leaves&quot;:[{&quot;text&quot;:&quot;3)支持多语言 python  java&quot;,&quot;marks&quot;:[]}]}],&quot;state&quot;:{}},{&quot;type&quot;:&quot;block&quot;,&quot;id&quot;:&quot;NGPW-1662033050552&quot;,&quot;name&quot;:&quot;paragraph&quot;,&quot;data&quot;:{},&quot;nodes&quot;:[{&quot;type&quot;:&quot;text&quot;,&quot;id&quot;:&quot;EXf5-1662033050101&quot;,&quot;leaves&quot;:[{&quot;text&quot;:&quot;缺点:只能做UI自动化  就是一个库&quot;,&quot;marks&quot;:[]}]}],&quot;state&quot;:{}},{&quot;type&quot;:&quot;block&quot;,&quot;id&quot;:&quot;H6oJ-1662033050553&quot;,&quot;name&quot;:&quot;paragraph&quot;,&quot;data&quot;:{},&quot;nodes&quot;:[{&quot;type&quot;:&quot;text&quot;,&quot;id&quot;:&quot;InYW-1662033050103&quot;,&quot;leaves&quot;:[{&quot;text&quot;:&quot;9、selenium 安装&quot;,&quot;marks&quot;:[]}]}],&quot;state&quot;:{}},{&quot;type&quot;:&quot;block&quot;,&quot;id&quot;:&quot;WsJ6-1662033050554&quot;,&quot;name&quot;:&quot;paragraph&quot;,&quot;data&quot;:{},&quot;nodes&quot;:[{&quot;type&quot;:&quot;text&quot;,&quot;id&quot;:&quot;NU9c-1662033050105&quot;,&quot;leaves&quot;:[{&quot;text&quot;:&quot;1)win +R ,输入cmd&quot;,&quot;marks&quot;:[]}]}],&quot;state&quot;:{}},{&quot;type&quot;:&quot;block&quot;,&quot;id&quot;:&quot;YX4w-1662033050555&quot;,&quot;name&quot;:&quot;paragraph&quot;,&quot;data&quot;:{},&quot;nodes&quot;:[{&quot;type&quot;:&quot;text&quot;,&quot;id&quot;:&quot;znj7-1662033050107&quot;,&quot;leaves&quot;:[{&quot;text&quot;:&quot;2)进入python 安装路径,cd C:\\Python37\\Scripts  假如在d盘  输入d:&quot;,&quot;marks&quot;:[]}]}],&quot;state&quot;:{}},{&quot;type&quot;:&quot;block&quot;,&quot;id&quot;:&quot;mk0b-1662033050556&quot;,&quot;name&quot;:&quot;paragraph&quot;,&quot;data&quot;:{},&quot;nodes&quot;:[{&quot;type&quot;:&quot;text&quot;,&quot;id&quot;:&quot;Zk9Z-1662033050109&quot;,&quot;leaves&quot;:[{&quot;text&quot;:&quot;3)输入 pip install selenium==3.141.0&quot;,&quot;marks&quot;:[]}]}],&quot;state&quot;:{}},{&quot;type&quot;:&quot;block&quot;,&quot;id&quot;:&quot;LYZi-1662033050557&quot;,&quot;name&quot;:&quot;paragraph&quot;,&quot;data&quot;:{},&quot;nodes&quot;:[{&quot;type&quot;:&quot;text&quot;,&quot;id&quot;:&quot;rN1e-1662033050111&quot;,&quot;leaves&quot;:[{&quot;text&quot;:&quot;如果报错运行:python -m pip --upgrade pip  运行这个&quot;,&quot;marks&quot;:[]}]}],&quot;state&quot;:{}},{&quot;type&quot;:&quot;block&quot;,&quot;id&quot;:&quot;8rmI-1662033050558&quot;,&quot;name&quot;:&quot;paragraph&quot;,&quot;data&quot;:{},&quot;nodes&quot;:[{&quot;type&quot;:&quot;text&quot;,&quot;id&quot;:&quot;pBhf-1662033050113&quot;,&quot;leaves&quot;:[{&quot;text&quot;:&quot;10、selenium项目了解&quot;,&quot;marks&quot;:[]}]}],&quot;state&quot;:{}},{&quot;type&quot;:&quot;block&quot;,&quot;id&quot;:&quot;ZJAz-1662033050559&quot;,&quot;name&quot;:&quot;paragraph&quot;,&quot;data&quot;:{},&quot;nodes&quot;:[{&quot;type&quot;:&quot;text&quot;,&quot;id&quot;:&quot;p7nu-1662033050115&quot;,&quot;leaves&quot;:[{&quot;text&quot;:&quot;1)pip install   python自带的安装工具&quot;,&quot;marks&quot;:[]}]}],&quot;state&quot;:{}},{&quot;type&quot;:&quot;block&quot;,&quot;id&quot;:&quot;iO9j-1662033050560&quot;,&quot;name&quot;:&quot;paragraph&quot;,&quot;data&quot;:{},&quot;nodes&quot;:[{&quot;type&quot;:&quot;text&quot;,&quot;id&quot;:&quot;5JDk-1662033050117&quot;,&quot;leaves&quot;:[{&quot;text&quot;:&quot;2)dos 窗口使用 pip list   ==》查看当前python安装了哪些第三方库&quot;,&quot;marks&quot;:[]}]}],&quot;state&quot;:{}},{&quot;type&quot;:&quot;block&quot;,&quot;id&quot;:&quot;8dPv-1662033050561&quot;,&quot;name&quot;:&quot;paragraph&quot;,&quot;data&quot;:{},&quot;nodes&quot;:[{&quot;type&quot;:&quot;text&quot;,&quot;id&quot;:&quot;9Agt-1662033050119&quot;,&quot;leaves&quot;:[{&quot;text&quot;:&quot;3)pip安装好的库一般是在 C:\\Python37\\Lib\\site-packages 里面&quot;,&quot;marks&quot;:[]}]}],&quot;state&quot;:{}},{&quot;type&quot;:&quot;block&quot;,&quot;id&quot;:&quot;YRha-1662033050562&quot;,&quot;name&quot;:&quot;paragraph&quot;,&quot;data&quot;:{},&quot;nodes&quot;:[{&quot;type&quot;:&quot;text&quot;,&quot;id&quot;:&quot;MUfd-1662033050121&quot;,&quot;leaves&quot;:[{&quot;text&quot;:&quot;11、selenium原理&quot;,&quot;marks&quot;:[]}]}],&quot;state&quot;:{}},{&quot;type&quot;:&quot;block&quot;,&quot;id&quot;:&quot;gjYv-1662033050563&quot;,&quot;name&quot;:&quot;paragraph&quot;,&quot;data&quot;:{},&quot;nodes&quot;:[{&quot;type&quot;:&quot;text&quot;,&quot;id&quot;:&quot;G5Y3-1662033050123&quot;,&quot;leaves&quot;:[{&quot;text&quot;:&quot;1)selenium 库中有一个webdriver包,webdriver包里面有一个chrome包,里面有一个webdriver模块&quot;,&quot;marks&quot;:[]}]}],&quot;state&quot;:{}},{&quot;type&quot;:&quot;block&quot;,&quot;id&quot;:&quot;KxIw-1662033050564&quot;,&quot;name&quot;:&quot;paragraph&quot;,&quot;data&quot;:{},&quot;nodes&quot;:[{&quot;type&quot;:&quot;text&quot;,&quot;id&quot;:&quot;QrmF-1662033050125&quot;,&quot;leaves&quot;:[{&quot;text&quot;:&quot;2)在C:\\Python37\\Scripts 放入 chromedriver.exe 驱动&quot;,&quot;marks&quot;:[]}]}],&quot;state&quot;:{}},{&quot;type&quot;:&quot;block&quot;,&quot;id&quot;:&quot;18Ov-1662033050565&quot;,&quot;name&quot;:&quot;paragraph&quot;,&quot;data&quot;:{},&quot;nodes&quot;:[{&quot;type&quot;:&quot;text&quot;,&quot;id&quot;:&quot;McoN-1662033050127&quot;,&quot;leaves&quot;:[{&quot;text&quot;:&quot;12)selenium 中元素定位方法&quot;,&quot;marks&quot;:[]}]}],&quot;state&quot;:{}},{&quot;type&quot;:&quot;block&quot;,&quot;id&quot;:&quot;OGoB-1662033050566&quot;,&quot;name&quot;:&quot;paragraph&quot;,&quot;data&quot;:{},&quot;nodes&quot;:[{&quot;type&quot;:&quot;text&quot;,&quot;id&quot;:&quot;SJIm-1662033050129&quot;,&quot;leaves&quot;:[{&quot;text&quot;:&quot;webdriver 模块提供了9种定位方法&quot;,&quot;marks&quot;:[]}]}],&quot;state&quot;:{}},{&quot;type&quot;:&quot;block&quot;,&quot;id&quot;:&quot;gtCZ-1662033050567&quot;,&quot;name&quot;:&quot;paragraph&quot;,&quot;data&quot;:{},&quot;nodes&quot;:[{&quot;type&quot;:&quot;text&quot;,&quot;id&quot;:&quot;bCx0-1662033050131&quot;,&quot;leaves&quot;:[{&quot;text&quot;:&quot;①id 定位&quot;,&quot;marks&quot;:[{&quot;type&quot;:&quot;color&quot;,&quot;value&quot;:&quot;#F33232&quot;}]}]}],&quot;state&quot;:{}},{&quot;type&quot;:&quot;block&quot;,&quot;id&quot;:&quot;XkFH-1662033050568&quot;,&quot;name&quot;:&quot;paragraph&quot;,&quot;data&quot;:{},&quot;nodes&quot;:[{&quot;type&quot;:&quot;text&quot;,&quot;id&quot;:&quot;0SNG-1662033050133&quot;,&quot;leaves&quot;:[{&quot;text&quot;:&quot;如果把元素定位看成一个人的话,id就是身份证  唯一  通过id属性定位&quot;,&quot;marks&quot;:[]}]}],&quot;state&quot;:{}},{&quot;type&quot;:&quot;block&quot;,&quot;id&quot;:&quot;LbX2-1662033050569&quot;,&quot;name&quot;:&quot;paragraph&quot;,&quot;data&quot;:{},&quot;nodes&quot;:[{&quot;type&quot;:&quot;text&quot;,&quot;id&quot;:&quot;yUPZ-1662033050135&quot;,&quot;leaves&quot;:[{&quot;text&quot;:&quot;1、谷歌浏览器 f12&quot;,&quot;marks&quot;:[]}]}],&quot;state&quot;:{}},{&quot;type&quot;:&quot;block&quot;,&quot;id&quot;:&quot;NZLJ-1662033050570&quot;,&quot;name&quot;:&quot;paragraph&quot;,&quot;data&quot;:{},&quot;nodes&quot;:[{&quot;type&quot;:&quot;text&quot;,&quot;id&quot;:&quot;dcn0-1662033050137&quot;,&quot;leaves&quot;:[{&quot;text&quot;:&quot;2、鼠标空白处右键点击检查&quot;,&quot;marks&quot;:[]}]}],&quot;state&quot;:{}},{&quot;type&quot;:&quot;block&quot;,&quot;id&quot;:&quot;yMqX-1662033050571&quot;,&quot;name&quot;:&quot;paragraph&quot;,&quot;data&quot;:{},&quot;nodes&quot;:[{&quot;type&quot;:&quot;text&quot;,&quot;id&quot;:&quot;bsmq-1662033050139&quot;,&quot;leaves&quot;:[{&quot;text&quot;:&quot;②、name定位&quot;,&quot;marks&quot;:[{&quot;type&quot;:&quot;color&quot;,&quot;value&quot;:&quot;#F33232&quot;}]}]}],&quot;state&quot;:{}},{&quot;type&quot;:&quot;block&quot;,&quot;id&quot;:&quot;5rAJ-1662033050572&quot;,&quot;name&quot;:&quot;paragraph&quot;,&quot;data&quot;:{},&quot;nodes&quot;:[{&quot;type&quot;:&quot;text&quot;,&quot;id&quot;:&quot;Ghll-1662033050141&quot;,&quot;leaves&quot;:[{&quot;text&quot;:&quot;name属性好比一个人的名字,可以重复,也可以唯一&quot;,&quot;marks&quot;:[]}]}],&quot;state&quot;:{}},{&quot;type&quot;:&quot;block&quot;,&quot;id&quot;:&quot;ZnHY-1662033050573&quot;,&quot;name&quot;:&quot;paragraph&quot;,&quot;data&quot;:{},&quot;nodes&quot;:[{&quot;type&quot;:&quot;text&quot;,&quot;id&quot;:&quot;98xL-1662033050143&quot;,&quot;leaves&quot;:[{&quot;text&quot;:&quot;③class 定位&quot;,&quot;marks&quot;:[{&quot;type&quot;:&quot;color&quot;,&quot;value&quot;:&quot;#F33232&quot;}]}]}],&quot;state&quot;:{}},{&quot;type&quot;:&quot;block&quot;,&quot;id&quot;:&quot;pG0j-1662033050574&quot;,&quot;name&quot;:&quot;paragraph&quot;,&quot;data&quot;:{},&quot;nodes&quot;:[{&quot;type&quot;:&quot;text&quot;,&quot;id&quot;:&quot;Rff1-1662033050145&quot;,&quot;leaves&quot;:[{&quot;text&quot;:&quot;class 和name差不多,可以重复 可以唯一&quot;,&quot;marks&quot;:[]}]}],&quot;state&quot;:{}},{&quot;type&quot;:&quot;block&quot;,&quot;id&quot;:&quot;i7sd-1662033050575&quot;,&quot;name&quot;:&quot;paragraph&quot;,&quot;data&quot;:{},&quot;nodes&quot;:[{&quot;type&quot;:&quot;text&quot;,&quot;id&quot;:&quot;IdHr-1662033050147&quot;,&quot;leaves&quot;:[{&quot;text&quot;:&quot;④ xpath 定位&quot;,&quot;marks&quot;:[{&quot;type&quot;:&quot;color&quot;,&quot;value&quot;:&quot;#F33232&quot;}]}]}],&quot;state&quot;:{}},{&quot;type&quot;:&quot;block&quot;,&quot;id&quot;:&quot;NovY-1662033050576&quot;,&quot;name&quot;:&quot;paragraph&quot;,&quot;data&quot;:{},&quot;nodes&quot;:[{&quot;type&quot;:&quot;text&quot;,&quot;id&quot;:&quot;sgYC-1662033050149&quot;,&quot;leaves&quot;:[{&quot;text&quot;:&quot;xpath 是通过路径定位元素(绝对路径和相对路径)&quot;,&quot;marks&quot;:[]}]}],&quot;state&quot;:{}},{&quot;type&quot;:&quot;block&quot;,&quot;id&quot;:&quot;9O1e-1662033050577&quot;,&quot;name&quot;:&quot;paragraph&quot;,&quot;data&quot;:{},&quot;nodes&quot;:[{&quot;type&quot;:&quot;text&quot;,&quot;id&quot;:&quot;USpU-1662033050151&quot;,&quot;leaves&quot;:[{&quot;text&quot;:&quot;from selenium import webdriver   #通过selenium库导入webdriver包&quot;,&quot;marks&quot;:[]}]}],&quot;state&quot;:{}},{&quot;type&quot;:&quot;block&quot;,&quot;id&quot;:&quot;YGFo-1662033050578&quot;,&quot;name&quot;:&quot;paragraph&quot;,&quot;data&quot;:{},&quot;nodes&quot;:[{&quot;type&quot;:&quot;text&quot;,&quot;id&quot;:&quot;kp8H-1662033050154&quot;,&quot;leaves&quot;:[{&quot;text&quot;:&quot;from time import sleep&quot;,&quot;marks&quot;:[]}]}],&quot;state&quot;:{}},{&quot;type&quot;:&quot;block&quot;,&quot;id&quot;:&quot;QId4-1662033050579&quot;,&quot;name&quot;:&quot;heading&quot;,&quot;data&quot;:{&quot;version&quot;:1,&quot;level&quot;:&quot;h1&quot;},&quot;nodes&quot;:[]},{&quot;type&quot;:&quot;block&quot;,&quot;id&quot;:&quot;iDKf-1662033050580&quot;,&quot;name&quot;:&quot;paragraph&quot;,&quot;data&quot;:{},&quot;nodes&quot;:[{&quot;type&quot;:&quot;text&quot;,&quot;id&quot;:&quot;Tv0F-1662033050157&quot;,&quot;leaves&quot;:[{&quot;text&quot;:&quot;driver = webdriver.Chrome()        #创建一个driver对象或者说一个浏览器对象,&quot;,&quot;marks&quot;:[]}]}],&quot;state&quot;:{}},{&quot;type&quot;:&quot;block&quot;,&quot;id&quot;:&quot;D5iG-1662033050581&quot;,&quot;name&quot;:&quot;paragraph&quot;,&quot;data&quot;:{},&quot;nodes&quot;:[{&quot;type&quot;:&quot;text&quot;,&quot;id&quot;:&quot;6axG-1662033050159&quot;,&quot;leaves&quot;:[{&quot;text&quot;:&quot;# 打开一个空白的浏览器 通过webdriver模块调用了Chrome() 类&quot;,&quot;marks&quot;:[]}]}],&quot;state&quot;:{}},{&quot;type&quot;:&quot;block&quot;,&quot;id&quot;:&quot;e4uW-1662033050582&quot;,&quot;name&quot;:&quot;paragraph&quot;,&quot;data&quot;:{},&quot;nodes&quot;:[{&quot;type&quot;:&quot;text&quot;,&quot;id&quot;:&quot;vlLI-1662033049723&quot;,&quot;leaves&quot;:[{&quot;text&quot;:&quot;driver.get(" ","marks":[]}]},{"type":"inline","id":"favd-1662033049725","name":"link","data":{"href":"http:="" www.baidu.com"},"nodes":[{"type":"text","id":"oqbp-1662033049724","leaves":[{"text":"http:="" www.baidu.com","marks":[]}]}]},{"type":"text","id":"vgul-1662033049744","leaves":[{"text":"')="" #打开百度","marks":[]}]}],"state":{}},{"type":"block","id":"cqgo-1662033050583","name":"paragraph","data":{},"nodes":[{"type":"text","id":"1rzj-1662033050162","leaves":[{"text":"driver.maximize_window()="" #窗口最大化","marks":[]}]}],"state":{}},{"type":"block","id":"m9jl-1662033050584","name":"paragraph","data":{},"nodes":[{"type":"text","id":"8vik-1662033050164","leaves":[{"text":"sleep(5)="" ","marks":[{"type":"color","value":"#f33232"}]},{"text":"="" #等待3s","marks":[]}]}],"state":{}},{"type":"block","id":"bgl2-1662033050585","name":"paragraph","data":{},"nodes":[{"type":"text","id":"pm5e-1662033050166","leaves":[{"text":"元素定位id","marks":[]}]}],"state":{}},{"type":"block","id":"s0mn-1662033050586","name":"paragraph","data":{},"nodes":[{"type":"text","id":"zjw8-1662033050168","leaves":[{"text":"1)id="" 定位法","marks":[{"type":"color","value":"#f33232"}]}]}],"state":{}},{"type":"block","id":"aboy-1662033050587","name":"paragraph","data":{},"nodes":[{"type":"text","id":"k9wi-1662033050170","leaves":[{"text":"driver.find_element_by_id('kw').send_keys('python')","marks":[]}]}],"state":{}},{"type":"block","id":"5dqr-1662033050588","name":"paragraph","data":{},"nodes":[{"type":"text","id":"sl0j-1662033050172","leaves":[{"text":"2)name定位法","marks":[{"type":"color","value":"#f33232"}]}]}],"state":{}},{"type":"block","id":"lpyx-1662033050589","name":"paragraph","data":{},"nodes":[{"type":"text","id":"5vae-1662033050174","leaves":[{"text":"driver.find_element_by_name('wd').send_keys('python')","marks":[]}]}],"state":{}},{"type":"block","id":"mlta-1662033050590","name":"paragraph","data":{},"nodes":[{"type":"text","id":"simu-1662033050176","leaves":[{"text":"3)class="" 定位法","marks":[{"type":"color","value":"#f33232"}]}]}],"state":{}},{"type":"block","id":"pqw0-1662033050591","name":"paragraph","data":{},"nodes":[{"type":"text","id":"xnzm-1662033050178","leaves":[{"text":"driver.find_element_by_class_name('s_ipt').send_keys('python')","marks":[]}]}],"state":{}},{"type":"block","id":"re3g-1662033050592","name":"paragraph","data":{},"nodes":[{"type":"text","id":"wi6v-1662033050180","leaves":[{"text":"4)link_text="" 定位链接","marks":[{"type":"color","value":"#f33232"}]}]}],"state":{}},{"type":"block","id":"lipj-1662033050593","name":"paragraph","data":{},"nodes":[{"type":"text","id":"e2dj-1662033050182","leaves":[{"text":"driver.find_element_by_link_text('hao123').click()="" #点击链接","marks":[]}]}],"state":{}},{"type":"block","id":"wkfp-1662033050594","name":"paragraph","data":{},"nodes":[{"type":"text","id":"5dyb-1662033050184","leaves":[{"text":"5)partial_link_text="" 模糊匹配","marks":[{"type":"color","value":"#f33232"}]}]}],"state":{}},{"type":"block","id":"vnjs-1662033050595","name":"paragraph","data":{},"nodes":[{"type":"text","id":"msqt-1662033050186","leaves":[{"text":"driver.find_element_by_partial_link_text('123').click()","marks":[]}]}],"state":{}},{"type":"block","id":"emjv-1662033050596","name":"paragraph","data":{},"nodes":[{"type":"text","id":"dx5x-1662033050188","leaves":[{"text":"6)javascript="" 定位,var="" 是javascript里面定义变量的="" a="" 是变量","marks":[{"type":"color","value":"#f33232"}]}]}],"state":{}},{"type":"block","id":"xs9s-1662033050597","name":"paragraph","data":{},"nodes":[{"type":"text","id":"fopa-1662033050190","leaves":[{"text":"js="var a =document.getElementById(\&quot;kw\&quot;).value=\&quot;python\&quot;" ","marks":[]}]}],"state":{}},{"type":"block","id":"fe3j-1662033050598","name":"paragraph","data":{},"nodes":[{"type":"text","id":"ft9q-1662033050192","leaves":[{"text":"driver.execute_script(js)="" #执行","marks":[]}]}],"state":{}},{"type":"block","id":"8kpo-1662033050599","name":"paragraph","data":{},"nodes":[{"type":"text","id":"f9mq-1662033050194","leaves":[{"text":"7)tag_name="" 定位","marks":[{"type":"color","value":"#f33232"}]}]}],"state":{}},{"type":"block","id":"gdfd-1662033050600","name":"paragraph","data":{},"nodes":[{"type":"text","id":"mjnh-1662033050196","leaves":[{"text":"s="driver.find_element_by_tag_name('input')" #这个只适合一个input标签","marks":[]}]}],"state":{}},{"type":"block","id":"s2g5-1662033050601","name":"paragraph","data":{},"nodes":[{"type":"text","id":"ejyc-1662033050198","leaves":[{"text":"s="driver.find_elements_by_tag_name('input')" #定位input标签放到列表中","marks":[]}]}],"state":{}},{"type":"block","id":"7og5-1662033050602","name":"paragraph","data":{},"nodes":[{"type":"text","id":"rnxa-1662033050200","leaves":[{"text":"print(type(s))="" #数据类型1、什么是UI自动化
原本用手工操作ui页面的方式,现在用代码去实现自动化操作的方式
2、UI自动化的优点
1)解决重复性功能测试和验证
2)减少回归测试的人力 时间
3)减少回归测试时漏测的现象
3、什么样的项目适合做UI自动化
1)需要比较稳定,需求变更不频繁
2)项目周期比较长
3)UI空间和页面元素不能频繁变更
4、UI自动化的应用场景
登录==》加入购物车==》下单  手工操作
==》可以用自动化去操作==》自动化回归测试
5、UI自动化的覆盖率
1)用例数量的覆盖率:站当前迭代用例总数的20%  ==》是把主流程的用例转化为自动化
2)场景覆盖率:70-80%
6、目前市面上主流程的ui自动化工具
1)python +selenium (要学习)
2)java +selenium
3)rebot framework +selenium2library
7、UI自动化的框架
python +selenium +unittest +po 分层
8、selenium 的优点 和缺点
1)支持多平台 windows linux
2)支持多浏览器 chrome 火狐 ie
3)支持多语言 python  java
缺点:只能做UI自动化  就是一个库
9、selenium 安装
1)win +R ,输入cmd
2)进入python 安装路径,cd C:\Python37\Scripts  假如在d盘  输入d:
3)输入 pip install selenium==3.141.0
如果报错运行:python -m pip --upgrade pip  运行这个
10、selenium项目了解
1)pip install   python自带的安装工具
2)dos 窗口使用 pip list   ==》查看当前python安装了哪些第三方库
3)pip安装好的库一般是在 C:\Python37\Lib\site-packages 里面
11、selenium原理
1)selenium 库中有一个webdriver包,webdriver包里面有一个chrome包,里面有一个webdriver模块
2)在C:\Python37\Scripts 放入 chromedriver.exe 驱动
12)selenium 中元素定位方法
webdriver 模块提供了9种定位方法
①id 定位
如果把元素定位看成一个人的话,id就是身份证  唯一  通过id属性定位
1、谷歌浏览器 f12
2、鼠标空白处右键点击检查
②、name定位
name属性好比一个人的名字,可以重复,也可以唯一
③class 定位
class 和name差不多,可以重复 可以唯一
④ xpath 定位
xpath 是通过路径定位元素(绝对路径和相对路径)
from selenium import webdriver   #通过selenium库导入webdriver包
from time import sleep

driver = webdriver.Chrome()        #创建一个driver对象或者说一个浏览器对象,
# 打开一个空白的浏览器 通过webdriver模块调用了Chrome() 类
driver.get('http://www.baidu.com')     #打开百度
driver.maximize_window()              #窗口最大化
sleep(5)                             #等待3s
元素定位id
1)id 定位法
driver.find_element_by_id('kw').send_keys('python')
2)name定位法
driver.find_element_by_name('wd').send_keys('python')
3)class 定位法
driver.find_element_by_class_name('s_ipt').send_keys('python')
4)link_text 定位链接
driver.find_element_by_link_text('hao123').click()  #点击链接
5)partial_link_text 模糊匹配
driver.find_element_by_partial_link_text('123').click()
6)JavaScript 定位,var 是JavaScript里面定义变量的 a 是变量
js = 'var a =document.getElementById("kw").value="python"'
driver.execute_script(js)        #执行
7)tag_name 定位
s = driver.find_element_by_tag_name('input')     #这个只适合一个input标签
s = driver.find_elements_by_tag_name('input')      #定位input标签放到列表中
print(type(s))       #数据类型
print(len(s))        #17
for i in s:
if i.get_attribute('id')=='kw':
#i 就是一个一个input标签,当判断是百度输入框的那个input就输入python
i.send_keys('python')
8)xpath 定位
driver.find_element_by_xpath('//*[@id="kw"]').send_keys('python')
driver.find_element_by_xpath('//*[@name="wd"]').send_keys('python')
driver.find_element_by_xpath('//*[@class="s_ipt"]')
driver.find_element_by_xpath('//*[@name="wd" and @class="s_ipt"]').send_keys('python')   #组合标签
driver.find_element_by_xpath('//*[@autocomplete="off"]').send_keys('python')
driver.find_element_by_xpath('//*[@id="form"]/span[1]/input[1]').send_keys('python')
#id = form 是input的上上级,input的上级是span标签,span是form下第一个标签再
下面的第一个input
9)css定位
driver.find_element_by_css_selector('#kw').send_keys('python')     #id选择器定位
driver.find_element_by_css_selector('.s_ipt').send_keys('python')  #class选择器
driver.find_element_by_css_selector('[name=wd]').send_keys('python')
driver.find_element_by_css_selector('[class=s_ipt]').send_keys('python')
driver.find_element_by_css_selector('[name=wd][class=s_ipt]').send_keys('python') #组合选择器
driver.find_element_by_css_selector('[autocomplete=off]').send_keys('python')
driver.find_element_by_css_selector('span>input').send_keys('python')   #找上级
driver.find_element_by_css_selector('form>span>input').send_keys('python')  #找上上级 找上上级标签
10)
1、定位文本框和密码框
from selenium import webdriver
from time import sleep

driver = webdriver.Chrome()
driver.get('http://cms.duoceshi.cn/cms/manage/login.do')
driver.maximize_window()
sleep(3)
driver.find_element_by_id('userAccount').send_keys('admin')
driver.find_element_by_id('loginPwd').send_keys('123456')
driver.find_element_by_id('loginBtn').click()    #点击登录按钮
2、通过send_keys方法上传文件
from selenium import webdriver
from time import sleep

driver = webdriver.Chrome()
driver.get('file:///D:/lesson2/%E7%AC%AC%E4%BA%8C%E4%B8%AA%E6%9C%88%E7%9A%84%E8%AF%BE%E4%BB%B6/20.11.16%E5%8F%B7-18%E5%8F%B7%20%E7%AC%AC%E4%BA%8C%E4%B8%AA%E6%9C%88%E4%B9%8B%E7%AC%AC11%E8%AE%B2%EF%BC%9A%E5%A4%9A%E6%B5%8B%E5%B8%88ui%E8%87%AA%E5%8A%A8%E5%8C%96%E6%B5%8B%E8%AF%95%E5%AE%9E%E6%88%98%E4%B9%8Bselenium/elem/upload_file.html')
driver.maximize_window()
sleep(3)
第一种方法
driver.find_element_by_id('file').send_keys(r'C:\Users\Administrator\Desktop\data.csv')
第二种方法
ele =driver.find_element_by_id('file')
ele.send_keys(r'C:\Users\Administrator\Desktop\data.csv')
3、定位百度隐藏框
from selenium import webdriver
from time import sleep
from selenium.webdriver.common.action_chains import ActionChains    #ActionChains 类
driver = webdriver.Chrome()
driver.get('http://www.baidu.com')
driver.maximize_window()
sleep(3)
第一种方法
点击设置==》然后选择搜索设置
driver.find_element_by_id('s-usersetting-top').click()     #点击设置
driver.find_element_by_link_text('搜索设置').click()     #点击设置后再搜索设置哪里右键检查定位
sleep(2)
第二种方法 模拟 mouse orver  鼠标悬浮
mouse = driver.find_element_by_id('s-usersetting-top')    #定位赋值给mouse
ActionChains(driver).move_to_element(mouse).perform()
#move_to_element 就是鼠标移动到设置上面   perform() 执行这个操作
driver.find_element_by_link_text('搜索设置').click()
sleep(2)
driver.find_element_by_link_text('保存设置').click()   #点击保存设置
sleep(2)
alert = driver.switch_to.alert        #进入到alert弹框
print(alert.text)                #打印弹框的信息  打印文本   已经记录下您的使用偏好
alert.accept()                  #点击确定按钮
alert.dismiss()                 #点机取消按钮
4、selenium 当中的等待
'''
1 线程等待   sleep(5)   不管有没有加载出来都会等待5s  强制等待
2 隐式等待   implicitly_wait(5)    智能等待,作用域全局,如果再5s内全部网页元素加载完成则继续
往下执行,超过5s则报错
3 显示等待 WebDriverWait   只作用于特定的元素,每个几秒去刷新和寻找页面元素,如果找不到
则往下执行,超过5s则报错
'''
from selenium import webdriver
from time import sleep
from selenium.webdriver.support.wait import WebDriverWait      #导入显示等待的包
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
driver = webdriver.Chrome()
driver.get('http://www.baidu.com')  
driver.maximize_window()
sleep(3)                 #线程等待
driver.implicitly_wait(5)      #隐式等待
driver.find_element_by_id('kw').send_keys('python')
WebDriverWait(driver,5,poll_frequency=0.5).until(EC.presence_of_all_elements_located((By.ID,'su')))
driver.find_element_by_id('su').click()    #点击百度按钮
sleep(5)
driver.close()
5 获取text文本信息和title
from selenium import webdriver
from time import sleep

driver = webdriver.Chrome()

driver.get('http://www.baidu.com')
driver.maximize_window()
# 1)获取文本
value = driver.find_element_by_xpath('//*[@id="s-top-left"]/a[2]').text  #获取页面元素
if value=='hao123':
print('获取成功')
else:
print('获取失败')
2)获取title
断言
title = driver.title       #获取标题
print(title)
if title =='百度一下,你就知道':
print('获取成功')
else:
print('获取失败')
assert title=='百度一下,你就知道'      #不会有打印结果
6 刷新窗口  打开一个新的窗口 返回上一步  获取窗口大小
1)获取窗口大小
size = driver.get_window_size()
print(size)   #{'width': 1296, 'height': 696}

# 2)返回上一步
driver.find_element_by_id('kw').send_keys('python')
sleep(5)

driver.find_element_by_id('su').click()
sleep(3)
driver.back()     #返回上一步
sleep(3)
# 3)刷新窗口
driver.refresh()

# 4)打开一个新窗口
win = 'window.open("http://www.jd.com")'
driver.execute_script(win)
7) 切换窗口
from selenium import webdriver
from time import sleep
driver = webdriver.Chrome()
打开第一个窗口
driver.get('http://www.baidu.com')
driver.maximize_window()
打开第二个窗口
win = 'window.open("http://www.jd.com")'
driver.execute_script(win)
title = driver.title
print(title)       #百度一下,你就知道  当前主窗口是百度
handle = driver.current_window_handle       #获取当前主窗口百度的句柄
#句柄:是一个用来标识的对象
print(handle)       #CDwindow-2F4444FCA95D218C0104681A947B0BD1
all_handle = driver.window_handles      #获取所有窗口的句柄
print(all_handle)  #['CDwindow-39CFEA72D8404179150BE6545D76468C', 'CDwindow-6B373C86709BEC4ABF146808CAE46B97']
1)通过索引取值去切换窗口
driver.switch_to.window(all_handle[1])      #切换窗口
title1 = driver.title
print(title1)      #  京东(JD.COM)-正品低价、品质保障、配送及时、轻松购物!
2)通过for循环
for i in all_handle:
if i !=handle: #判断如果i 不是当前百度句柄,那就切换窗口
driver.switch_to.window(i)     #切换京东窗口
title2 = driver.title
print(title2)      #京东(JD.COM)-正品低价、品质保障、配送及时、轻松购物!

分享至 : QQ空间
收藏

0 个回复

您需要登录后才可以回帖 登录 | 立即注册