Selenium框架沉淀

1、环境搭建

python+pycharm+selenium+chorme+谷歌浏览器驱动

2、八大定位元素

Question:如果元素定位不到,是怎么去分析的?

(1)元素没有加载完成(2)框架中(3)元素不可用,不可读,不可见(4)动态属性,动态的DIV层

元素定位前提:需要定位的元素或它的属性必须唯一。

id,nme,class_name,xpath,csstag_name,link_text,partail_link_text

(1)id定位:driver.find_element(By.ID,"kw").send_keys("123")

(2)name定位:driver.find_element(By.NAME,"wd").send_keys("123")

(3)link_text定位:driver.find_element(By.LINK_TEXT,"新闻").click()

(4)partail_link_text定位:driver.find_element(By.PARTIAL_LINK_TEXT,"闻").click()

(5)xpath定位

  相对路径://开头是相对路径  

  相对路径+索引定位:driver.find_element(By.XPATH,"//form/span[1]/input").send_keys("123")

  相对路径+属性定位:driver.find_element(By.XPATH,"//input[@autocomplete='off']").send_keys("123")

  相对路径+通配符定位:driver.find_element(By.XPATH,"//*[@id='kw']").send_keys("123")

【复制xpath的方式经常会出错】

  相对路径+部分属性定位:

 driver.find_element(By.XPATH,"//*[starts-with(@autocomplete,'off')]").send_keys("123")

 driver.find_element(By.XPATH,"//*[substring(@autocomplete,2)='ff']").send_keys("123")

 driver.find_element(By.XPATH,"//*[contains(@autocomplete,'off')]").send_keys("123")

  相对路径+文本定位:

driver.find_element(By.XPATH,"//span[text()='按图片搜索']").get_attribute('class')

  绝对路径:/开头是绝对路径

(6)css定位

绝对路径:不用

其他方式:通过id和class定位

                  通过属性定位

                  通过部分属性定位

                  查询子元素定位

                  查询兄弟节点定位

3、unittest使用方法

①新建一个类继承unittest.TestCase

②导入unit test

③写一个以test开头的方法

4、项目中常用

进入菜单框架:driver.switch_to.frame("menu-frame")

出框架:driver.switch_to.default_content()

下拉框:①sel = select(driver.find_element())   ②sel.select_by_value("")/sel.select_by_visible_text("")/sel.select_by_index("7")

弹窗:alert(只确定),confirm(有确定有取消),prompt(有确定有取消还可以输入值)

①ale = driver.switch_to.alert ②ale.accept/dismiss()

多选框:

5、设计模式(封装)——pom模式(page object model)+关键字驱动模式

pom模式:解决线性脚本的问题,解决代码不能重复利用的问题,解决后期维护问题

                 分三层:第一层基础层base,主要放selenium原生的方法

                               第二层页面对象层po,主要用于放页面的元素和页面的动作

                               第三层测试用例层,testcase存放测试用例以及测试数据

                   页面对象层调用基础层的方法,测试用例层调用页面对象层的方法

6、生成报告

使用unittest默认的测试用例的加载器去发现testcase目录下-py结尾的所有测试用例

suite = unittest.defaultTestLoader.discover("./testcase","test_login.py")

生成html报告文件

report_file = open("./report/reports.html","wb")

生成一个HTMLTestRunner运行器对象(必须下载一个文件HTMLTestRunner.py,放在python的lib目录下)

runner = HTMLTestRunner(stream=report_file,title="****",describation)

通过运行器运行测试用例

runner.run(suite)

7、断言

self.assertEqual()判断两个值是否相等

self.assertTrue()判断一个值是否为True

self.assertIn()判断一个值是否在另一个值里面

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值