selenium自动化初级

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() 判断元素是否可用

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。