作者:White Song
Blog: https://blog.yilon.top
介绍
相关文章:以后再有人问你selenium是什么,你就把这篇文章给他
如果有耐心,可以详细阅读上方文档,下面是精炼概要
如今,大多数软件应用都是跑在浏览器中的网站应用。不同公司和组织之间的测试效率迥异。在这个富交互和响应式处理随处可见的时代,很多组织都使用敏捷的方式来开发,因此测试自动化也成为软件项目的必备部分。测试自动化意味着使用软件工具来反复运行项目中的测试,并为回归测试提供反馈。
自动化测试,就是把手工进行的测试过程,转变成机器自动执行的测试过程。该过程,依旧是为了发现错误而执行。因此自动化测试的关键在于“自动化”三个字。自动化测试的内容,也就相应的转变成如何“自动化”去实现原本手工进行的测试的过程。
自动化测试可以涉及和试用的范围主要在以下方面:
- 基于
Web UI
的浏览器应用的界面测试 - 基于
WebService
或者WebAPI
的服务契约测试 - 基于
WCF
、remoting
、Spring
等框架的服务的集成测试 - 基于
APP UI
的移动应用界面测试 - 基于
Java
、C#
等编程文件进行的单元测试
基于Web UI
的自动化测试工具主要有两大类:付费的商业版工具和免费使用的开源版工具。典型的有两种:
- UFT,QTP被惠普收购以后的新名称。
- 通过程序的录制,可以实现测试的编辑
- 录制的测试脚本是 VBScript 语法
- 成熟版的商业付费工具
- 工具比较庞大,对具体的项目定制测试有难度
- SELENIUM,本次选择的开源工具
- 本身不是测试工具,只是模拟浏览器操作的工具
- 背后有 Google 维护源代码
- 支持全部主流的浏览器
- 支持主流的编程语言,包括:Java、Python、C#、PHP、Ruby、JavaScript等
- 工具很小,可以实现对测试项目的定制测试方案
- 基于标准的 WebDriver 语法规范
Selenium 是开源的自动化测试工具, 应该是最广泛使用的开源方案。它主要是用于Web 应用程序的自动化测试,不只局限于此,同时支持所有基于web 的管理任务自动化。
Selenium 是用于测试 Web 应用程序用户界面 (UI) 的常用框架。它是一款用于运行端到端功能测试的超强工具。您可以使用多个编程语言编写测试,并且 Selenium 能够在一个或多个浏览器中执行这些测试。
- elenium 官网:selenium.dev/
- Selenium Github 主页:github/SeleniumHQ
教程
Selenium 中文文档
Selenium with Python中文翻译文档
以下是Python使用Selenium个人学习心得
webdriver使用配置
在使用WebDriver来操作浏览器时,请先下载相应的driver
from selenium import webdriver
driver = webdriver.Chrome()
各浏览器Driver下载地址
Chrome: | https://sites.google/a/chromium/chromedriver/downloads |
---|---|
Edge: | https://developer.microsoft/en-us/microsoft-edge/tools/webdriver/ |
Firefox: | https://github/mozilla/geckodriver/releases |
Safari: | https://webkit/blog/6900/webdriver-support-in-safari-10/ |
使用时可直接指定driver的路径,也可将路径添加到浏览器的Application目录下,然后将该路径添加到PATH
中.
from selenium import webdriver
driver = webdriver.Chrome("./chromedriver")
实战
使用Python + Selenium,自动发布博客文章。
文章格式建议为Markdown
格式。
发布个人博客
博客简介
- 博客名称: 风吟
- 使用Halo开源框搭建,使用主题为寒山
- 此博客为个人技术学习分享所建,欢迎来踩踩~(* ̄︶ ̄)
相关代码
测试文件
元数据最好设置成yaml格式
---
title: 自动发布测试文章
date: 2020-03-20
categories: ["测试"]
summary: "摘要信息"
author: White Song
tags: ["标签"]
cover: https://img.yilon.top/blog/cld3w.jpg
blog: https://blog.yilon.top
---
### 自动发布
自动发布文章正文测试。。
### 参考地址
> [分吟 - 博客](https://blog.yilon.top/)
主入口
核心方法
代码太多,在这里就不粘贴了。
详细可见Github地址:blog-auto-sender
常见问题汇总
-
可以使用
get_attribute
方法进行调试button = self.driver.find_element_by_xpath("//button[@type='button']") button.get_attribute("class")
-
编写前可以先考虑人的正常操作,然后执行相应的步骤。如鼠标悬停
ActionChains(self.driver).move_to_element(ele).perform()
-
打开本地html文件
from selenium import webdriver driver = webdriver.Firefox(executable_path="data/driver/geckodriver") driver.get("file://${文件绝对路径}")
-
find_element_by_xpath
方法元素是从下标1
开始。 -
对于ajax等需要异步请求的组件,使用
WebDriverWait
, 才可以正确取到元素 -
让当前的元素滚动到浏览器窗口的可视区域内。
#当传入参数为分别为true与false时,当点击右侧的按钮时,红色的div会贴近可视区域的顶部或底部。 self.driver.execute_script("arguments[0].scrollIntoView(false);", button)
-
由于某些编辑器对输入有自动格式化,可通过模拟复制粘贴的方式解决
# 前置安装 pip install --upgrade --force-reinstall PyObjC PyObjC-core # 若安装不了,请使用安装包:python setup.py install # https://github/SavinaRoja/PyUserInput/wiki/Installation pip install PyUserInput pyperclip.copy(self.content) k = pykeyboard.PyKeyboard() ele_edit.send_keys(Keys.CONTROL, 'a') ele_edit.send_keys(Keys.RETURN) time.sleep(1) # ele_edit.send_keys(Keys.CONTROL, 'v') k.press_keys(['Command', 'v']) k.press_keys(['Return']) time.sleep(1)
-
在python执行过程中,提示seleniummon.exceptions.WebDriverException: Message: TypeError: can’t access dead object
原因是代码中用到了frame,获取元素前需要切换到frame才能定位到元素,否则无法定位到元素.
在查找元素前加一句driver.switch_to_default_content() 退出frame
self.driver.switch_to.default_content() # 退出frame,没有这一句后续的元素定位会出错 rite_blog = WebDriverWait(self.driver, self.timeout).until(lambda d: d.find_element_by_xpath("/html/body/div[1]/div/div/ul/li[@class='write-bolg-btn']/a"))
项目地址
Github地址:blog-auto-sender
更多推荐
Selenium简介与使用教程&项目实战
发布评论