首页 > 其他分享 >全栈测试开发系列----Selenium简介安装入门

全栈测试开发系列----Selenium简介安装入门

时间:2023-06-19 16:57:10浏览次数:63  
标签:webdriver 浏览器 Selenium driver ---- 全栈 import selenium

 

  本章将使用当前最新的 Python3和 Selenium3 作为 Web 自动化测试框架开发基础。既然是自动化脚本的开发,那么一切都需要多实践,需要动手敲下每一个实例中的每行代码,然后根据实际项目举一反三,就绝对可以有信心地跟别人说:“Selenium! So Easy!”

知识点:
  HTML 技术:了解一个HTML页面的基本结构、基本元素、常用的HTML标签及使用是实现Web自动化脚本设计的基础。
  CSS技术:CSS是层叠样式表。为了实现网页美化以及各种特效,CSS 是必不可少的在后期高级的元素定位方式中也需要应用到CSS 技术以及jQuery 方法,所以了解学习CSS 是必要的。
  Selenium 基础:了解 Selenium 的版本区别(Selenium IDE 可录制脚本插件),掌握Selenium实现脚本的核心原理及浏览器驱动的应用方法。
  Selenium 元素定位大全:除了 8 种基本元素定位,本书将继续扩展多种高级定位方法
  Selenium操作浏览器机制:掌握 Selenium 实现浏览器的相关操作方法,如放大、缩小全屏、截图等。
  WebDriverAPI及对象识别技术(一):掌握鼠标和键盘事件,处理一个HTML页面中包含多个IFrame的情况,下拉列表框的多种实现方式等。WebDriverAPI 及对象识别技术(二):掌握如何控制脚本的执行度,基于不同的文件类型实现文件的上传和下载操作,解决面试必问的一个热点话题,掌握验证码如何实现多种方式的处理等。

前端HTML/CSS学习:w3school 在线教程

 

1.1 Selenium 简介
  Selenium是一款免费的、开源的、基于Web页面的UI自动化测试工具,它可以支持多个浏览器(如IE、FireFox、Safari、Chrome、Android 手机浏览器等)、支持跨平台(如 Windows、Linux、IOS、Android等)、支持多语言(如Java、C#、Python、Php等)等。Selenium提供了一套完善的测试函数,功能非常灵活,能够完成界面元素的定位、窗口的跳转、结果的比较等。

补充:

  Selenium是一款用于测试Web应用程序的经典工具,它直接运行在浏览器中,仿佛真正的用户在操作浏览器一样,主要用于网站自动化测试、网站模拟登陆、自动操作键盘和鼠标、测试浏览器兼容性、测试网站功能等,同时也可以用来制作简易的网络爬虫。


1.2 Selenium家族
  Selenium 框架其实是由多个工具组成的,分别是 Selenium IDE、Selenium RC、Selenium WebDriver和Selenium Grid。
  Selenium IDE是一个可以通过录制操作完成基本脚本构建的工具,拥有简单易用的界面。它是 FireFox 浏览器中的一个插件,可以录制用户的基本操作,生成测试脚本。生成的脚本不仅可以直接在浏览器中进行回放,还可以转换成各种语言的自动化脚本并保存到本地。
  Selenium RC可以说是整个Selenium家族的核心,它使用编程语言来创建更为复杂的测试其编程语言可以是JavaC#、PHP、Python等。Selenium RC主要是由Client Libraries和SeleniumServer 组成的,Client Libraries 主要通过编写测试脚本来控制 Selenium Server 库,而Selenium Server主要负责控制浏览器的行为,该库又包括三部分:Launcher Http Proxy和Core。Selenium Core是一系列JavaScript函数的集合,只有通过JavaScript 函数才可以实现用程序对浏览器进行相应的操作。而 Launcher 的作用主要是启动浏览器,然后将 Selenium Core 加载到浏览器页面中,通过Selenium Server的 HttpProxy完成对应浏览器的代理设置。
  Selenium WebDriver其实就是Selenium RC的升级版,是基于Selenium RC进行再次封装的可以直接发送命令给浏览器。
  Selenium Grid用于运行不同的机器,不同的浏览器进行并行测试,目的就是加快测试用例的运行速度,从而减少测试运行的总时间。灵活利用 Grid 可以很简单地让多台机器在异构环境

 

下载安装:pip install selenium

 

1.3 浏览器驱动

  Selenium需要安装浏览器驱动,才能调用浏览器进行自动爬取或自动化测试,常见的包括Chrome、Firefox、IE、PhantomJS等浏览器。 

附浏览器驱动下载地址:   Chrome浏览器驱动:chromedriver , 备用地址   Firefox浏览器驱动:GitHub地址geckodriver   Edge浏览器驱动:MicrosoftWebDriver   IE浏览器驱动:IEDriverServer   Opera浏览器驱动:operadriver   PhantomJS浏览器驱动:phantomjs

注意:驱动下载解压后,将chromedriver.exe、geckodriver.exe、Iedriver.exe置于Python的安装目录下,例如Python的安装目录为“C:\python”,则将驱动文件放置于该文件夹下;然后将Python的安装目录添加到系统环境变量路径(Path)中,打开Python IDLE输入不同的代码来启动不同的浏览器

PhantomJS是一个服务器端的 JavaScript API 的开源的浏览器引擎(WebKit)。它支持各种Web标准,包括DOM树分析、CSS选择器、JSON和SVG等。PhantomJS常用于页面自动化、网络监测、网页截屏以及无界面测试等

驱动加载代码示例

# 火狐
 from selenium import webdriver
 driver = webdriver.Firefox()
driver.get('http://www.baidu.com/')

 # Chrome
from selenium import webdriver
get_webdriver = webdriver.Chrome()
get_webdriver.get('http://192.168.235.128/index.php/home')


# IE
from selenium import webdriver
browser = webdriver.Ie()
browser.get('http://www.baidu.com/')


# Phantomjs
from selenium import webdriver
driver=webdriver.PhantomJS(executable_path="F:\phantomjs.exe")
driver.get("http://www.baidu.com")
data = driver.title
print(data)

 

 

1.4 Selenium快速入门示例(百度): 

import time
from selenium import webdriver
from selenium.webdriver.common.keys import Keys

#启动火狐浏览器驱动
driver = webdriver.Firefox()
driver.get("http://www.baidu.com")
assert "百度" in driver.title
print(driver.title)

#查找元素并输入内容
elem = driver.find_element_by_name("wd")
elem.send_keys("自动化测试")
elem.send_keys(Keys.RETURN)

#截图并退出
time.sleep(10)
driver.save_screenshot('baidu.png')
driver.close()
driver.quit()

 

代码解析:

  • from selenium import webdriver

    导入Selenium.webdriver模板,它提供了webdriver的实现方法,目前支持这些方法的浏览器有Firefox、Chrome、IE和Remote等。

  • from selenium.webdriver.common.keys import Keys

    导入Keys类,它提供了操作键盘的快捷键,如回车键、空格键、ctrl键等操作。

  • driver = webdriver.Firefox()

    创建Firefox webdriver实例,定义火狐浏览器(Firefox)驱动,其他浏览器如Chrome可能还需要设置驱动参数和配置路径。

  • driver.get(“http://www.baidu.com”)

    接下来通过driver.get()函数打开百度url网页,webdriver会等待网页元素加载完成之后才把控制权交回脚本。

  • assert “百度” in driver.title

    接下来使用断言(assert)判断文章的标题title是否包含了“百度”字段。对应爬取的标题是“百度一下,你就知道”,所以包含了“百度”,否则会出现断言报错。断言主要用于判断结果是否成功返回,从而更好地执行下一步定位操作。

  • elem = driver.find_element_by_name(“wd”)

    webdriver提供了很多形如“find_element_by_*”的方法来匹配要查找的元素。如利用name属性来查找的方法是find_element_by_name,这里通过该方法来定位百度输入框,即审查元素name为“wd”的节点。

  • driver.find_element_by_id(“kw”)

    百度首页审查元素的反馈结果,其中输入框input元素对应属性name为“kw”

  • elem.send_keys(“自动化测试”)

    send_keys()方法可以用来模拟键盘操作,相当于是在搜索框中输入“自动化测试”字段。

  • elem.send_keys(Keys.RETURN)

    调用send_keys()函数输入回车键操作,其中Keys类提供了常见的键盘按键,如Keys.RETURN表示回车键。但在引用Keys类及其方法之前,需要注意先导入Keys类,即使用“from selenium.webdriver. common.keys import Keys”代码导入。

    • 补充:此处也也可以使用鼠标类:from selenium.webdriver.common.action_chains import ActionChains,定位“百度一下”按钮的元素,并通过.click()方法搜索
  • driver.save_screenshot(‘baidu.png’)

    调用save_screenshot()函数进行截图,并将截图保存至本地,名称为为“baidu.png”。

  • driver.close()

    调用close()方法关闭驱动。

  • driver.quit()

    调用quit()方法退出驱动。它与close()方法的区别在于:quit()方法会退出浏览器,而close()方法只是关闭页面,但如果只有一个页面被打开,close()方法会退出浏览器。

 

 

 

文章内容来源:《Python全栈测试开发》、娜章ai安全之家

 

标签:webdriver,浏览器,Selenium,driver,----,全栈,import,selenium
From: https://www.cnblogs.com/Candy123/p/17491234.html

相关文章

  • HDFS相关概念
    他的块比一般的大,为什么要这么设计缺点:(块不是越大越好)块设计的好处HDFS两大组件:元数据:......
  • c盘里的appdata隐藏的显示方法
    按“win+R”,打开运行,输入:controlfolders点击确定,执行命令打开文件夹选项。文件夹选项,选择:查看,去掉【隐藏受保护的操作系统文件】前的对勾,再选中【隐藏文件和文件夹】→【显示所有文件和文件夹】,最后点击确定。找到自己的账户Administrator,双击打开。就能显示了。......
  • echarts设置散点图颜色渐变
    在echarts散点图中,可以使用系统默认的图例颜色设置散点图,也可以设置具体的颜色设置,还可以添加单个散点颜色渐变,也可以设置整个echarts散点颜色渐变1.不设置颜色在不设置颜色的情况下,echarts会使用自带的调色盘进行颜色选择默认如下。['#5470c6','#91cc75','#fac858','#ee66......
  • BLE中的L2CAP层基本功能分析
    逻辑链路(LogicalLink)在明白L2CAP之前要先明白其中L2代表的logiclink是什么意义,在spec中的下述章节对这些概念进行了基本解释Vol1:Architecture&TerminologyOverviewPartA:Architecture3Datatransportarchitecture由于历史发展的原因,传统蓝牙将数据传输的方式方......
  • 将docker里的所有images镜像推送至服务器上的harbor指定的仓库里
    使用shell脚本实现将docker里的所有images镜像推送至服务器上的harbor指定的仓库里shell脚本内容如下:#!/bin/bash#设置Harbor仓库的地址和凭据#harbor服务器地址HARBOR_URL="192.168.1.55:88"#用户名HARBOR_USERNAME="admin"#登录密码HARBOR_PASSWORD="Harbor12345"#指......
  • SpringCloud WebUploader 分块上传
    ​ 第一点:Java代码实现文件上传FormFilefile=manform.getFile();StringnewfileName= null;Stringnewpathname= null;StringfileAddre= "/numUp";try{    InputStreamstream=file.getInputStream();// 把文件读入    StringfilePath=request.......
  • kotlin 调用对应java实现
    kotlin调用对应java实现1.枚举kotlion默认是publiccotlin枚举enumclassDoorState{OPEN,CLOSE}--------- java实现publicstaticenumDoorState{OPEN,CLOSE;}2.class2.1dataclasskotlin调用dataclassLoginResult(变量)----......
  • 初读指南
    怎么说,感觉相当于荒废了一年,间歇性的学了点东西,但也不多。绩点也没卷起来,挺废的。但接下来还是好好学点东西。也跟着科研吧,希望可以做一点成果出来。至于暑假的计划:Missing-SemesterCS61A数据结构 一些要学习的东西:首先找个好IDE用着,绷。命令行,Vim,Git,GNUMake(CMake),LaTex......
  • 一些关于智能硬件的随想
    一些关于智能硬件的随想最近在给自己的开源项目LithosphereIoTPlatform补文档。LithosphereIoT平台里,包括了名为sand-demo演示范例。在项目文档z中,hello系列教程里的,也包括了几个软硬件一体的范例。既然是IoT平台的范例,肯定少不了要出现智能硬件。基本上来说,在范例中出现的......
  • Codeforces Round 879 (Div
    CodeforcesRound879(Div.2)A-D题解第一次写题解,请见谅O3Oa题代码是完整的,后面的只显示主要内容的代码A.UnitArray题目解释他会给你一个只包含1或者-1的数字串,每次操作可以把1变成-1或者把-1变成1,要求操作之后的串满足每一位累加>=0,每一位累乘=1,求最小的操作次数思路......