• 打个响指Selenium自动化开启


    最近斗哥在朋友的影响下,接触了自动化测试工具中的一个项目:appium自动化测试脚本。

    appium类库封装了标准Selenium客户端类库,为用户提供所有常见的JSON格式selenium命令以及额外的移动设备控制相关的命令,所以在讲appium类前先了解下Selenium自动化测试的使用。

    其实功能测试自动化跟爬虫一样 ,都是要进行元素定位与操作,所以Selenium可以用来爬取数据。

    0x00 Selenium简述

    Selenium 是一个用于Web应用程序测试的工具。提供了一系列简单的API,让我们使用Selenium WebDriver调用 WebDriver的所有功能,Selenium可以直接操作浏览器,就像真正的用户在操作一样。

    0x01 Selenium 环境准备

    一、语言选择

    Selenium 支持多种语言开发,如Java、Python、Ruby、PHP、C#、JavaScript等。
    斗哥这里选择Python。

    python官网(https://www.python.org/)下载对应系统安装包,python2版本与python3版本都支持Selenium
    安装步骤斗哥这里就不介绍,安装完成后在终端输入python看到python的安装的版本信息。则安装成功(未发现命令可能要手动添加安装位置的环境变量)。
     


    二、浏览器选择

    Selenium支持与多种浏览器交互,如Chrome、Firefox、Edge、Safari等
    除了火狐浏览器原生支持以外,Selenium 要通过浏览器驱动来与浏览器交互。
    Chrome:
    https://sites.google.com/a/chromium.org/chromedriver/downloads
    下载Chrome驱动需要梯子,无法下载可以在下方留言浏览器驱动
    Edge:
    https://developer.microsoft.com/ ... dge/tools/webdriver
    Safari:
    https://webkit.org/blog/6900/webdriver-support-in-safari-10
    以Chrome为例,下载时都是32位的驱动这个不用在意,下载对应的Chrome版本就行。
     


    下载完,将这个exe的路径加入环境变量, 就可以根据驱动连接浏览器。
     


    新手推荐火狐浏览器,不需要驱动。

    三、 Selenium安装

    windows的python安装包已经集成了pip可以直接使用
    命令:pip install selenium
    下载时指定版本为3.14.1。
     


    0x03 Selenium 快速入门

    01

    02

    03

    04

    05

    06

    07

    08

    09

    10

    11

    12

    13

    14

    15

    # -*-coding:utf-8-*-

    from selenium import webdriver

    driver=webdriver.Firefox()

    # 打开火狐浏览器空白窗体

    driver.get('https://www.baidu.com')

    # 启动浏览器并且导航到指定URL

    driver.close()

    # 关闭浏览器



    此时已经控制浏览器,并且自动访问百度。
     



    0x04 Selenium 元素定位

    当我们要访问页面某个功能,某个标签,就需要在界面找到这些元素。selenium中有一系列以find_开头的方法,都是用于元素定位。
     

    01

    02

    03

    04

    05

    06

    07

    08

    09

    10

    11

    12

    13

    14

    15

    16

    17

    18

    19

    20

    21

    22

    23

    24

    25

    26

    27

    28

    29

    30

    31

    32

    33

    34

    35

    36

    37

    38

    39

    40

    41

    通过id定位元素:

    find_element_by_id(self, id_)

    find_elements_by_id(self, id_)  返回list

    通过class定位元素:

    find_element_by_class_name(self, name)

    find_elements_by_class_name(self, name)  返回list

    通过name属性定位元素:

    find_element_by_name(self, name)

    find_elements_by_name(self, name)  返回list

    通过标签名定位元素:

    find_element_by_tag_name(self, name)

    find_elements_by_tag_name(self, name)  返回list

    通过链接文本定位元素:

    find_element_by_link_text(self, link_text) 完全匹配

    find_element_by_partial_link_text(self, link_text) 部分匹配

    通过xpath定位元素:

    find_element_by_xpath(self, xpath)

    find_elements_by_xpath(self, xpath) 返回list

    通过css选择器定位元素:

    find_element_by_css_selector(self, css_selector)

    find_elements_by_css_selector(self, css_selector) 返回list



    先使用浏览器的开发者模式,或者用Firebug等插件,确定元素位置属性,再用脚本实现。
    确定了百度的输入框位置。
     



    就可以用方法对定位元素的位置。如:driver.find_element_by_id('kw')

    0x05 Selenium 元素操作

    定位完就可以对元素做操作,鼠标点击,输入文本。

    1

    2

    3

    4

    5

    6

    7

    clear(self)  清除文本输入框

    click(self)  点击元素

    submit(self)  提交表单

    send_keys(self*value)  发送信息


     

    01

    02

    03

    04

    05

    06

    07

    08

    09

    10

    11

    12

    13

    14

    15

    16

    17

    from selenium import webdriver

    import time

    from selenium.webdriver.common.keys import Keys

    driver=webdriver.Firefox()

    driver.get('https://www.baidu.com')

    driver.find_element_by_id('kw').send_keys('python')

    #输入

    driver.find_element_by_id('kw').send_keys(Keys.ENTER)

    #回车



    如果运行正常,将会自动执行以下操作:打开一个火狐浏览器,然后打开百度首页,在输入框中输入“python”然后回车。
     



    0x06 小小总结

    本期的内容就介绍到这里啦!下期将带来appium测试工具的使用,以及appium测试微信小程序的相关介绍。不见不散

  • 相关阅读:
    HDU 4832(DP+计数问题)
    mongodb安装与使用
    (hdu step 6.3.7)Cat vs. Dog(当施工方规则:建边当观众和其他观众最喜爱的东西冲突,求最大独立集)
    dba_dependencies查询结果视图
    情绪一点点
    c#基于这些,你已经看到了?(一)-----谁才刚刚开始学习使用
    九. 200创业教训万元获得--“神刻”这是忽悠?
    初步swift语言学习笔记6(ARC-自己主动引用计数,内存管理)
    采用CSS3 Media Query技术适应Android平板屏幕分辨率和屏幕像素密度
    线程的上下文
  • 原文地址:https://www.cnblogs.com/ichunqiu/p/10083173.html
Copyright © 2020-2023  润新知