1、定位的问题
(1)id()方法,多数定位,我会首选id()方法,这是最准确,也是最简单,省事的,
(2)cssSelector()方法,然而,并不是所有的element都有id,此时,我会选择用cssSelector()方法,找到目标元素的一些属性,属性值需得正常,如果有太多的单引号,双引号,大括号,括号等等,或者属性值太长,舍弃,有些属性值例如style这些一般不考虑。
(3)linkText()方法或者partial_linkText()方法,对于input标签,会选择find_element_by_linkText()方法,对于input标签,这是最简单,省事的,
对应的有一个叫find_element_by_partial_linkText()方法,就是部分文本查找。
(4)tagName()或者className()方法,对于其他标签,其次用那些tagName(),或者className()方法之类的,
(5)父子级方法,然后,如果还是难定位,就选择用父子级方法,也需得父级的比较好定位,然后用父级去查找子级。
(6)xpath相对路径或者绝对路径方法,如果还是不好定位,就选用xpath,用的事相对路径,如果相对路径不好找,再用绝对路径。
基本的思路就是,直奔主题,哪个方便哪个来。
2、目前脚本中用到的事情
(1)数据库的连接,
对于测试来说,操作数据库是不可避免的,首先便是连接数据库,封装好增删改查,等等方法,作为一个工具类,在case中去调用,
(2)数据库的操作,
在删除数据库时,一定小心有无外键,若有外键,需考虑外键的操作,自然需要很熟悉数据库之间的关联,作为新手,作为还未熟悉业务的新手,去问开发是最好的办法,开发人员很耐心的为您解答,前提,与开发的搞好关系,例如没事的时候弄点小食品啥的分一分,或者去哪玩了,带点吃的回来分一分,大家都是良心的,自是有付出才会有收获。(扯远了。。)
还有一点非常重要的就是,数据库操作很费时,切勿在主线程中,另起一线程,若有什么需要数据库操作完的才能做的事,那就主线程等待子线程执行完毕再做。有一个叫CountDownLatch的,比较好用。
用法如下:
声明一个变量,
private static final CountDownLatch latch = new CountDownLatch(1);
在子线程start()之后立马执行:latch.await();
在子线程执行完毕的逻辑处执行:latch.countDown();
(3)数据库的删除,
数据库的删除经常分为软删除和硬删除,测试数据繁多,如果执行几轮下来,估计数据库中的数据太多了,如果需要删除,还是执行一下硬删除比较好,硬删除不行的话,再软删除。
3、断言
断言一般我会分为提示框的断言,页面数据的断言和数据库的断言。
(1)提示框的断言
操作完毕后,找到提示框,断言一些是否是期望的提示文本。
有的提示框几秒就没了,需要尽快断言,但是也不能太快,因为,脚本执行很快,而页面元素显示没那么快,自己找准时间就行,
(2)页面数据的断言,
一般是添加啥的,修改啥的,断言一下页面或者数据列表是否是添加后的数据或者修改的数据就行,
(3)数据库的断言,
就是在添加啥,或者修改啥之后,查看一下数据库,看看是否添加成功,修改成功。