zoukankan      html  css  js  c++  java
  • 第五章 常用页面元素自动化操作(上)

    -----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 

  • 相关阅读:
    MongoDB
    Flask-Migrate
    Flask-Script
    Flask-SQLAlchemy
    SQLAlchemy
    DBUtils
    依存句法分析
    如何将本地的jar包上传到maven本地仓库中
    git使用手册
    中文网页编解码问题
  • 原文地址:https://www.cnblogs.com/eagleking0318/p/6520885.html
Copyright © 2011-2022 走看看