美文网首页
selenium自动化初级

selenium自动化初级

作者: bear小熊熊 | 来源:发表于2020-09-20 22:54 被阅读0次

    selenium1. 介绍自动化2. selenium环境搭建3. WebDriver元素定位3.1 id定位3.2 name定位3.3 class_name定位3.4 tag_name定位3.5 link_text定位3.6 partial_link_text定位3.7 find_element[s]_by_XXX()3.8 Xpath定位3.9 CSS定位4. 元素操作4.1 常用操作4.2 浏览器常用方法4.3 WebDriver其它常用方法

    selenium

    1. 介绍自动化

    • web自动化:selenium、robot framework

    • App端自动化测试:Appium、Monkey

    • 接口:Jmeter、Postman、httpUnit、RESTClient

    2. selenium环境搭建

    • python:下载python安装

    • 下载WebDriver,可以去淘宝镜像下载,最好安装在python目录下,不需要单独配置环境变量

    • pip install selenium

    3. WebDriver元素定位

    • 定位方式8种:

      1). id、name、class_name:为元素属性定位
      2). tag_name:为元素标签名称
      3). link_text、partial_link_text:为超链接定位(a标签)
      4). Xpath:为元素路径定位
      5). Css:为CSS选择器定位

    • Webdriver代码格式:

      from selenium import webdriver # 导入库
      driver = web driver.Chrome() # 打开浏览器
      driver.get('url') # 填写http地址
      driver.find_element_by_id("").send_keys("") # 做操作
      driver.close() # 关闭当前页
      driver.quit() # 关闭浏览器

    3.1 id定位
    • 说明:

      • id属性在HTML文档种必须是唯一的
    • 方式:

      • find_element_by_id()
    3.2 name定位
    • 说明:

      • HTML规定name属性来指定元素名称,因此它的作用更像人名,name的属性值在当前文档中可以不是唯一的
    • 定位方法:

      • find_element_by_name()
    3.3 class_name定位
    • 说明:

      • HTML规定了class来指定元素的类名,用法和name、id类似;
    • 定位方法:

      • find_element_by_class_name()
    • 注意:

      • HTML的class元素里的名称如果用空格分隔,代表多个类名,写其中一个就行
    3.4 tag_name定位
    • 说明:

      • HTML本质就是由不同的tag(标签)组成,而每个tag都是指同一类,所以tag定位效率低,
        一般不建议使用;tag_name定位就是通过标签名来定位;
    • 定位方法:

      • find_element_by_tag_name()

        返回的符合条件的第一个标签

      • 如何获取第二个元素?

    3.5 link_text定位
    • 说明:

      • 专门定位超链接文本(<a>标签</a>)
    • 方法:

      • find_element_by_link_text()

        需要传入a标签全部文本

        定位后可以通过 .click() 来进行点击操作

    3.6 partial_link_text定位
    • 说明:

      • partial_link_text定位是对link_text定位的补充,partial_like_text为模糊匹配;link_text全部匹配
    • 方法:

      • find_element_by_partial_link_text()

        传入a标签局部文本

    3.7 find_element[s]_by_XXX()
    • element加了s

    • 作用:

      • 1. 查找定位所有符合条件的元素
        2. 返回的定位元素格式为数组(列表)格式;
        说明:
        2.1 列表数据格式的读取需要指定下标(下标从0开始)
    • 例子

      • 使用tag_name获取第二个元素(密码框)

        driver.find_elements_by_tag_name("input")[1].send_keys("123456")
    3.8 Xpath定位
    • Xpath和CSS定位可以解决,项目中没有id、name、class属性,或者id、name、class属性值为动态获取,随着刷新或加载而变化

    • 方法

      • driver.find_element_by_xpath()
    • Xpath定位方式

      • 路径-定位:绝对路径、相对路径

        • 绝对路径:从最外层元素到指定元素之间所有经过元素层级路径

          • 绝对路径以 ‘/’开始
        • 相对路径:从第一个符合条件元素开始(一般配合属性来区分)

          • 相对路径以‘//’开始
      • 利用元素等级定位

        • 利用元素的唯一属性定位 ://*[@id='userA']
      • 层级与属性结合

        • 要找的元素没有属性,但是它的父级有://*[@id='p1']/input
      • 属性与逻辑结合

        • 解决元素之间个相同属性重名的问题://*[@id='telA' and @class='telA']
      • //[text()="xxx"] 文本内容是xxx的元素
        //
        [starts-with(@attribute,'xxx')] 属性以xxx开头的元素
        //*[contains(@attribute,'Sxxx')] 属性中含有xxx的元素

    3.9 CSS定位
    • CSS定位速度Xpath要快

    • CSS定位方法

      • driver.find_element_by_css_selector()
    • 方式

      • id选择器

        • 说明:根据元素id属性来选择
          格式:#id 如:#userA <选择id属性值为userA的所有元素>
      • class选择器

        • 说明:根据元素class属性来选择
          格式:.class 如:.telA <选择class属性值为telA的所有元素>
      • 元素选择器

        • 说明:根据元素的标签名选择
          格式:element 如:input <选择所有input元素>
      • 属性选择器

        • 说明:根据元素的属性名和值来选择
          格式:[attribute=value] 如:[type="password"] <选择所有type属性值为password的值>
      • 层级选择器

        • 说明:根据元素的父子关系来选择
          格式:element>element 如:p>input <返回所有p元素下所有的input元素>
          提示:> 可以用空格代替 如:p input 或者 p [type='password']
      • 1. input[type^='p'] 说明:type属性以p字母开头的元素
        2. input[type$='d'] 说明:type属性以d字母结束的元素
        3. input[type*='w'] 说明:type属性包含w字母的元素

    • CSS功能

    • 选择器 例子 描述
      #id #userA id选择器,选择id="userA"的所有元素
      .class .telA class选择器,选择class="telA"的所有元素
      element input 选择所有input元素
      [attribute=value] [type="password"] 选择type="password"的所有元素
      element>element p>input 选择所有父元素为p元素的input元素
    • XPath与CSS类似功能对比

      定位方式 XPath CSS
      元素名 //input input
      id //input[@id='userA'] #userA
      class //*[@class='telA'] .telA
      属性 1. //※[text()="xxx"] 2. //※[starts-with(@attribute,'xxx')] 3. //※[contains(@attribute,'xxx')] 1. input[type^='p'] 2. input[type$='d'] 3. input[type*='w']

    4. 元素操作

    4.1 常用操作
    • clear():清除文本 一般清除input输入的值

    • send_keys:模拟输入

    • click():单击元素

    4.2 浏览器常用方法

    1. maximize_window() 最大化 --> 模拟浏览器最大化按钮
    2. set_window_size(100,100) 浏览器大小 --> 设置浏览器宽、高(像素点)
    3. set_window_position(300,200) 浏览器位置 --> 设置浏览器位置
    4. back() 后退 --> 模拟浏览器后退按钮
    5. forward() 前进 --> 模拟浏览器前进按钮
    6. refresh() 刷新 --> 模拟浏览器F5刷新
    7. close() 关闭 --> 模拟浏览器关闭按钮(关闭单个窗口)
    8. quit() 关闭 --> 关闭所有WebDriver启动的窗口

    4.3 WebDriver其它常用方法

    1. size 返回元素大小
    2. text 获取元素的文本
    3. title 获取页面title
    4. current_url 获取当前页面URL
    5. get_attribute() 获取属性值
    6. is_display() 判断元素是否可见
    7. is_enabled() 判断元素是否可用

    相关文章

      网友评论

          本文标题:selenium自动化初级

          本文链接:https://www.haomeiwen.com/subject/hjhmyktx.html