第五章 常用页面元素自动化操作(上)

-----Web自动化测试之Webdriver(python)--从零到熟练(系列)

   经过我们对自动化测试环境的搭建,页面元素的定位,测试点的验证以及自动化测试用例的初探等的学习,可以说我们可以编写自动化测试用例了。本章节我们将对常用的页面元素的自动化操作,作一下详细的介绍,以便大家在以后编写自动化测试用例的时候更加得心应手。

5.1 输入类元素

    现在很多网站都实行会员制或是实名制的,所以注册和登录是非常常见的操作,在一个网站上输入各种信息也是必不可少的,我们首先讲解输入类元素。

5.1.1 inputtextarea元素

    这两个是最常见的操作,这是的inputtypetextpassword类型,不是上传图片的,上图片我们下节再讲。对于这类输入文本的元素操作对于python是一种操作,先对元素进行定位,然后调用send_keys()函数,进行输入。

例:

def inputvalue(self,findby,elmethod,value):

        '''

        通过定制定位方法,在输入框中输入值

        @param findby: 定位方法,如:byid,byname,byclassname,byxpath

        @param elmethod: 要定位元素的属性值 ,如:id,name,class name,xpath

        @param value: 要给文本框输入的值

        '''

        if(findby == 'byid'):

            self.driver.find_element_by_id(elmethod).send_keys(value)

        elif(findby == 'byname'):

            self.driver. find_element_by_name(elmethod).send_keys(value)

        elif(findby =='byclassname'):

            self.driver.find_element_by_class_name(elmethod).send_keys(value)

        elif(findby == 'byxpath'):

self.driver.find_element_by_xpath(elmethod).send_keys(value)

 

     这个inputvalue函数就是我对这类操作函数进行的封装,根据不同的定位类型,先对要输入的元素进行操作,然后send_keys(value)将关键字输入进去。

注:有些儿网站在输入框失去焦点后不会清除里面默认的字符,为了确保输入正确,我们在定位到元素后先调用clear()函数,将默认的字符清除后再进行输入操作。

5.1.2 input上传文件

     inputtypefile时,说明这个元素是上传文件的,这个时候我们的普通操作是,单击这个元素,然后在弹出的上传文件对话框中选择要上传的文件,最后是单击上传按钮。

而在我们写自动化测试的时候,如果按这个步骤操作的话,会非常麻烦,因为我们无法定位弹出的上传文件对话框,要借助于第三方工具。其实没有必要这么麻烦,我们可以按照上面的上传文字的方法,不过参数不是文件 ,是文件路径,这样就能上传了。

例:

self. Driver.find_element_by_xpath (location).send_keys(filepath);

这个例子是用id来定位的,然后把文件路径作为参数传给这个元素。

注:这个文件路径最好是相对路径,将文件和代码放到一起,这样在代码放到其他的地方运行的时候,就不会出现找不到需要上传文件的现象了。

5.1.3 特殊按键的输入

   在输入过程中,有的时候我们需要输入特殊的按键,可是组合键。如按ESC或是CTRL+A ,这些儿我们无法用键盘输入的键,应该如何输入呢?

   其实和普通的字符输入差不多,不过需要调用特殊的类Key,例如:

1)执行按ESC键操作

  self.driver.find_element_by_name ('image_file').send_keys(Keys.ESCAPE)

2)执行按CTRL+a键操作

  self.driver.find_element_by_name ('image_file').send_keys((Keys.CONTROL, 'a'))

   当然对元素的输入操作这些儿是常见的,也有不常见的,如果遇到,可以酌情处理,多尝试几种方法。

5.2 单击类元素

   好像自从鼠标出现后,用鼠标完成的操作越来越多了,在我们自动化测试过程中,单击类操作是必不可少的操作之一。下面我们来看一下单击类操作的自动化测试代码:

5.2.1 按钮类元素单击

   在页面上单击按钮用来完成特定的操作,比较登录,注册,提交等。方法是,先定位到这个元素,然后调用click()函数。

例如:

def clickitem(self,findby,elmethod):

        '''

        通过定制定位方法,在对应的项目上执行单击操作

        @param findby: 定位方法,如:byid,byname,byclassname,byxpath

        @param elmethod: 要定位元素的属性值 ,如:id,name,class name,xpathtext

        '''

        if(findby == 'byid'):

            self.driver.find_element_by_id(elmethod).click()

        elif(findby == 'byname'):

            self.driver.find_element_by_name(elmethod).click()

        elif(findby == 'byxpath'):

            self.driver.find_element_by_xpath(elmethod).click()

        elif(findby == 'bytext'):

            self.driver.find_element_by_text(elmethod).click()

        elif(findby == 'byclassname'):

self.driver.find_element_by_class_name(elmethod).click()

 

函数clickitem()通过各种定位方法,先将要定位的元素定位,然后执行click()操作。

5.2.2 超级链接单击操作

   在网站上单击超级链接,从而执行相应的操作。可以像按钮一样,先定位到这个超级链接,然后执行click()函数。但是针对超级链接,有专门的定位方法 :

driver.find_element_by_link_text(link_text).click()

driver.find_element_by_partial_link_text(link_text).click()

  将超级链接全部文字或是部分文字用来定位,然后调用click()函数,就可以完成单击操作。

5.2.3 鼠标右击和双击操作

   虽然在测试过程中,对被测试元素进行右击和双击操作不太常用,可是这两个操作还是很有用的。对于不太常用的操作,webdriver就没有将这个操作封装到Element类中,而是在ActionChains 

posted @ 2015-03-11 15:01  潜龙9527  阅读(299)  评论(0编辑  收藏  举报