Web自动化测试:selenium的使用以及关于driver=webdriver.Firefox()无驱动报错问题

news2024/9/23 4:24:59

Selenium

1.什么是Selenium?

Selenium是一个用于Web应用程序测试的工具。
主流的自动化测试工具有:

  • web自动化测试:selenium、robot framework
  • App端自动化测试:Appium、Monkeyrunner、UIautomation
  • PC客户端(win32)自动化测试:QTP
  • 接口自动化测试:Jmeter、Postman、httpUnit、RESTClient
  • 云测平台:Testin Testbird
  • 性能测试:Jmeter、LoadRunner

2.Selenium的特点

1.开源软件:源代码开放可以根据需要来增加工具的某些功能
2. 跨平台:linux 、windows 、mac
3. 核心功能:就是可以在多个浏览器上进行自动化测试
4. 多语言:Java、Python、C#、JavaScript、Ruby等
5. 成熟稳定:目前已经被google , 百度, 腾讯等公司广泛使用
6. 功能强大:能够实现类似商业工具的大部分功能,因为开源性,可实现定制化功能

Webdriver

1.什么是Webdriver?

Webdriver (Selenium2)是一种用于Web应用程序的自动测试工具;
它提供了一套友好的API;
Webdriver完全就是一套类库,不依赖于任何测试框架,除了必要的浏览器驱动;
说明:API:应用编程接口说明(WebDriver类库内封装非常多的方法,要使用这些方法,就需要友好的调用命名规则)

2.WebdriverAPI支持的浏览器

  1. Firefox (FirefoxDriver)【推荐】
  2. IE(InternetExplorerDriver)
  3. Opera(OperaDriver)
  4. Chrome (ChromeDriver)
  5. safari(SafariDriver)
  6. HtmlUnit (HtmlUnit Driver)
    提示:
    Firefox、Chrome:对元素定位和操作有良好的支持,同时对JavaScript支持也非常好。
    IE:只能在windows平台运行,所有浏览器中运行速度最慢
    HtmlUnit:无GUI(界面)运行,运行速度最快;

推荐原因:

  1. Selenium IDE
  2. FireBug
  3. 对WebDriver API支持良好

环境搭建

基于Python的环境搭建

  1. Windows系统
  2. Python 3.5(以上版本)
  3. 安装selenium包
  4. 浏览器
  5. 安装PyCharm

selenium安装、卸载、查看命令

安装:pip install selenium==2.48.0
1). pip:通用的 Python 包管理工具。提供了对 Python 包的查找、下载、安装、卸载的功能。
2). install: 安装命令
3). selenium==2.48.0: 指定安装selenium2.48.0版本(如果不指定版本默认为最新版本)
卸载:pip uninstall selenium
查看:pip show selenium

火狐浏览器

  1. FireFox 48以上版本
    Selenium 3.X +FireFox驱动——geckodriver.exe
  2. Firefox 48 以下版本
    Selenium2.X 内置驱动

Webdriver-元素定位

Webdriver元素定位方式

  1. id
  2. name
  3. class_name
  4. tag_name
  5. link_text
  6. partial_link_text
  7. Xpath
  8. Css

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

案例

以id定位实现作为案例:

案例需求:
打开注册A.html页面,使用id定位,自动填写(账号A:admin、密码A:123456)

实现步骤:

  1. 导入selenium包 --> from selenium import webdriver
  2. 导入time包 --> from time import sleep
  3. 实例化火狐浏览器 --> driver=webdriver.Firefox()
  4. 打开注册A.html --> driver.get(url)
  5. 调用id定位方法 --> driver.find_element_by_id(“”)
  6. 使用send_keys()方法发送数据 --> .send_keys(“admin”)
  7. 暂停3秒 --> sleep(3)
  8. 关闭浏览器 --> quit()

代码实现:

from selenium import webdriver
from time import sleep
driver=webdriver.Firefox()
url='E:\\测试\\课件\\Web自动化\\Web自动化课件\\02img\\注册A.html'#需要自动化测试的网页的路径
driver.get(url)
#找到id为userA的账号输入框input
user=driver.find_element_by_id("userA")
#自动填写admin
user.send_keys("admin")
pwd=driver.find_element_by_id("passwordA")
pwd.send_keys("123456")
sleep(3)
driver.quit()

其他定位方式类似,略。

实验效果:
在这里插入图片描述

关于driver=webdriver.Firefox()无驱动报错问题

如果我们在上述执行过程中出现类似于提示driver=webdriver.Firefox()报错的问题,很有可能是我们没有配置好FireFox的浏览器驱动在我们的Python环境中。
解决方法是:
①下载geckodriver.exe
在这里插入图片描述
②将该驱动放置在当前我们的python环境
例如我的python项目是这样的:
在这里插入图片描述
那么我就把geckodriver.exe放在该目录下即可:
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/510533.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

打印机错误0x00000bc4,Win11系统找不到打印机怎么办

近期,又有不少小伙伴更新了Win11系统后,出现了打印机提示错误代码0x00000bc4,出现错误后,可能导致打印机无法正常工作,打印任务无法完成,或者打印机无法连接到电脑等问题。驱动人生就为大家带来打印机错误0…

使用docker部署wiki.js

安装docker这些就不讲了,教程一堆,相关的安装教程可以去官网看,只是没那么详细,尤其是有关数据库的配置:Docker 部署 Wiki.js pull wiki镜像: docker pull ghcr.io/requarks/wiki 如果是arm的机器&#xf…

Oracle存储过程~封神之作

简介 Oracle 存储过程是 Oracle 数据库中的一种数据处理对象,它可以在数据库中定义一组预定义的 SQL 语句,用于完成特定的数据库操作。存储过程可以被授权的用户调用,并且可以执行多个语句,这些语句可以被视为一个单独的操作&…

【逗老师的无线电】快速记录一下MMDVM串口屏相关

最近在研究MMDVM的串口屏,设计知识点比较多,本文先随手记一下,同时随时更新,最后形成完整的文档 一、Nextion和国内串口屏设计 MMDVM默认对接的是Nextion屏幕。但是有人跟我说,NXT的屏幕和国内陶晶驰的屏幕就是一个…

每周一算法:差分算法

差分算法 差分是一种常见的算法,用于快速修改数组中某一段区间的值。其基本思想就是预处理出数组的差分数组,然后修改区间时,只需要修改两个位置的值,即可快速完成区间修改。最后再通过差分数组求出原数组。差分算法在区间加、区…

kafka安装及配置

1. 下载 下载地址:Apache Kafka 我这里下载的是 3.2.1 版本。 2. 上传并解压 上传到 linux 下的 /home/software/ 目录下,然后解压 kafka_2.13-3.2.1.tgz 包到/usr/local/ cd /home/software tar -zxvf kafka_2.13-3.2.1.tgz -C /usr/local # -C 选…

【机器学习】信息量、香农熵、信息增益(增加例子,方便理解)

这节可以搭配 【机器学习】Logistic回归(重新整理)信息量(信息)信息量公式的推理过程 香农熵信息增益 【机器学习】Logistic回归(重新整理) B站视频:“交叉熵”如何做损失函数?打包…

医学影像系统源码,三维后处理和重建 PACS源码

医学影像系统源码,三维后处理和重建 PACS源码 医学影像系统由PACS系统、RIS系统组成,提供与HIS的接口(HL7或其他类型)。 主要功能介绍 信息预约登记 支持对患者、检查项目、申请医生、申请单据、设备等信息进行管理。且支持检查…

Apache网站部署SSL证书开启https访问,强制http跳转https

centos服务器博客网站安装教程可见:Centos 7.X WordPress博客网站详细教程 FTP/PHP/mysql/Apache环境构建_autotian的博客-CSDN博客本文详细的介绍了centos7.x系统下,如何构建FTP、mysql、PHP、Apache环境,并成功安装WordPress博客网站。http…

Java—JDK8新特性—函数式接口【内含思维导图】

目录 3.函数式接口 思维导图 3.1 什么是函数式接口 3.2 functionalinterface注解 源码分析 3.3 Lambda表达式和函数式接口关系 3.4 使用函数式接口 3.5 内置函数式接口 四大核的函数式接口区别 3.5.1 Supplier 函数式接口源码分析 3.5.2 Supplier 函数式接口使用 3.…

基于AT89C51单片机的篮球计时记分设计

点击链接获取Keil源码与Project Backups仿真图: https://download.csdn.net/download/qq_64505944/87771065 源码获取 主要内容: 基于51单片机设计篮球计时计分器,结合单片机串行接口原理,用AT89C51设计一个篮球比赛计分计时器,能够通过数码管显示分数和比赛时间(并设有…

linux驱动-gpio

最近处理es8336声卡问题,最后排查是spk_ctl_gpio和hp_det_gpio这两个gpio导致的,所以恶补了一下gpio相关的知识,现在总结一下。 源代码使用的是飞腾的gitee上开源的内核:https://gitee.com/phytium_embedded/phytium-linux-kernel…

什么是SVG格式?如何制作?

图像质量对页面非常重要——扭曲和缩放变形的标志、图标或照片会使页面看起来粗糙和不协调,这个问题只会因为响应设计而复杂。 访问者通过桌面机和智能手机查看应用程序,因此无论使用什么设备,图像都应该进行优化。如果有一个数字格式可以让…

基于FPGA+JESD204B 时钟双通道 6.4GSPS 高速数据采集设计(三)连续多段触发存储及传输逻辑设计

本章将完成数据速率为 80MHz 、位宽为 12bits 的 80 路并行采样数据的连续多 段触发存储。首先,给出数据触发存储的整体框架及功能模块划分。然后,简介 MIG 用户接口、设置及读写时序。最后,进行数据跨时钟域模块设计,内存…

XC7VX690T PCIE 硬件设计注意事项

首先参考PG023找到对应封装支持的位置 然后参考UG476找到对应的实际物理位置 XILINX 也有给出对应的推荐位置

gitlab服务器发送邮件配置

1.修改gitlab的配置文件: vim /etc/gitlab/gitlab.rb 这里具体的gitlab.rb文件所在路径需要根据实际的来 找到如下图所示的部分,放开注释,修改配置,此处我用的发件邮箱是QQ邮箱,所以域名配置都是qq.com,…

Springboot application/yaml/yml没有提示解决方案

有下面提示别安装该插件 卸载wl spring assistant plugin就好了,标志是yml图标变成六边形

线程间互斥-mutex互斥锁和lock_guard

要点 锁双重判断的技法 竟态条件:多线程程序执行的结果一致,不会随着CPU对线程不同的调用顺序 线程间安全实例——3个窗口同时卖票 线程不安全的代码如下 int ticketCount 100; // 100张车票 // 模拟10个窗口同时卖票 void sellTicket(int index) …

PostgreSQL11 | 索引

截止到上一篇《PostgreSQL11 | 查询数据》属于pgsql的基础部分就算是都总结完了,从这一篇(第9章)开始一直到本专栏最后一篇文章(第14章)都是进阶部分,sql量会减弱,抽象的概念会越来越多&#xf…

数字识别问题

文章目录 6.1 MNIST数据处理6.2.1 训练数据6.2.2 变量管理6.3.1 保存模型6.3.1 加载计算图6.3.1 加载模型6.3.2 导出元图 6.1 MNIST数据处理 在直接在第6章的目录下面创建文件 compat.v1.是tensorflow2.x的语法,全部删掉 删除compat.v1.后的代码 # -*- coding: …