栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

selenium几个项目

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

selenium几个项目

一、后台商品管理自动化测试

       步骤分解:

                1、后台登陆

                         1.1打开后台登陆页面     

                         1.2输入用户名(admin)、密码(password)、验证码      

                         1.3点击登陆按钮

                2、添加商品

                         2.1在后台管理中心,点击商品管理

                         2.2点击添加商品

                         2.3输入商品名称

                         2.4选择商品分类

                         2.5选择商品品牌

                         2.6点击提交按钮

                3、技术实验问题

                        1、验证码如何处理:(1)通过第三方图片识别文字的工具--准确率比较低

                                                   (2)通过第三方网站识别验证码--准确率高,几乎100%,收费

                                                   (3)设置万能验证码

                                                   (4)在测试环境中屏蔽掉验证码

                                                   (5)绑定IP地址

                                                   (6)读取cookie和缓存

                                                   (7)在输入验证码前,加一个固定时间等待,手动输入验证码

                                                        ......

                  2、如何查看系统是否存在万能验证码?

                                1、明确开发人员的源代码路径,例如  D:phpfindWWWappliaction 

                                2、为了看懂开发人员的代码,必须了解MVC设计模式。M代表模型层,主要用于和数据库打交道,一般有User类(string ID,string name,string email,string passWord),就会有User表,存放很多ID,name,email,passWord这些信息,每当实例化一个User类的对象,就会自动往User表中插入一条数据;V代表视图层,主要和前端界面打交道,用于收集和显示用户数据;C代表控制器controller,主要用于处理业务逻辑,判断验证码是否正确,属于业务逻辑层

                3、controller层负责系统所有的业务逻辑,那么如何找到后台登陆功能的源代码?

                        这时就要分析网址,例如:http://127.0.0.1/index.php?m=admin&c=public&a=login

网址中主要分为五部分:http(协议);127.0.0.1(域名或者IP地址);/index.php(路径);m=admin&c=public&a=login(参数);端口号(当协议是http,并且端口号是80,那么在网址中可以省略;HTTPS的默认端口号是443,也可以省略)

                        m=admin&c=public&a=login  :m是模块的意思,一个模块就是一个文件夹;c是controller的意思,一个控制器就是一个类,一个文件;a是action的意思,一个action就是代码中的一个方法

                        最终可以查询出来万能验证码1234

 

 

 

 

                4、元素属性存在,但是定位不到,怎么处理?

                                检查网页中是否存在frame标签,把鼠标放在根节点的标签上,检查页面高亮部分是否覆盖全屏,

                        脚本  

                        driver.switch_to.frame("frame的name属性名")

                5、元素的高级操作

                        ActionChains中封装了所有对页面元素进行的高级操作

ActionChains(driver)    Action是动作行为的意思,Chains是链表的意思,driver代表了当前的浏览器;合起来就是把当前浏览器转换成一个可以执行各种操作的行为链

双击某个元素的操作脚本   

ActionChains(driver).double_click(driver.find_element_by_id("7")).perform()

                6、css selector   (1)copy的方法:右键检查元素,选择copy,再选择copy selector

                                            (2)手动自己书写的方法:标签名可以直接在css selector 中使用

                                                                                          在css中,需要在class属性前面加一个小数点

                                                                                          在css中,需要在ID属性前面加一个#号

                                                                                          在css中,大于号>表示父子关系,例如:父>子

                                                                                          在css中,空格表示祖先元素和子孙元素的关系,例如:祖先 子孙

注意:1如果元素的某个属性是唯一的,那么直接在该属性两边加上中括号,就可以定位该元素

                例如:

                                driver.find_element_by_css_selector('[value="1"]')

                2css可以用多个属性组合的方式定位一个元素,例如

                                driver.find_element_by_css_selector(".a.b.c.d[value='1']")

                3各种符号的意义,能改写复制出来的css selector

                               #表示ID属性

                                .表示class属性

                                []用来表示所有属性    [id="1"]       [class='a']

                                >用来表示父子元素之间的关系     div>input     表示我们要找的input元素有一个父节点是div

                                标签名前面没有任何符号       a             input[value='1']

                                空格表示祖先和子孙之间的关系    例如   div#id input.class    表示页面中有一个ID="id"的div元素,在该div元素的子孙节点中有一个input标签,该input标签有一个class=‘class’的属性,我们要定位的就是这个input标签

                7、如何上传图片?

                        在前端点击的按钮不是真正负责上传文件的控件,真正负责上传文件的控件是,我们要做就是找到这个控件,然后,直接对这个控件进行send_keys,发送文件或者图片的路径即可

                8、遇到报错:element is not attached to the page document报错解决办法

                                在该报错代码上面加了句time.sleep(),就不再报错        

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1024637.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号