安装Edge浏览器及Selenium IDE测试工具
这里使用的是Edge浏览器,大家可以使用自己的浏览器,不过拓展里要有Selenium IDE,否则无法进行后续操作
点击链接下载并安装Edge浏览器下载 Microsoft Edge Web 浏览器 | Microsoft
打开浏览器,点击浏览器右侧工具栏,点击扩展
在点击左侧的获取 Microsoft Edge 扩展,然后搜索“selenium”,选择Selenium IDE安装。
安装之后可以在右上角看到Selenium IDE图标。
使用Selenium IDE
首先打开Selenium IDE
创建项目
点击“create a new project”,在弹出的页面输入项目名称“test01”
Selenium IDE界面说明
①运行所有:运行一个测试案例集中所有案例。
②运行:运行当前选定的测试案例。
③案例集列表。
④用来填写被测试网站里的地址。
⑤当前选中命令对应参数。
⑥日志/参考。
⑦测试脚本。
⑧跳过当前指令。
⑨速度控制:控制案例的运行速度。
⑩设置断点。
⑪暂停/恢复案例执行。
⑫录制:点击后可以记录你对浏览器的操作。
Selenium IDE的简单使用
录制脚本
点击右侧REC即可开始录制脚本。一般录制完脚本后,需要在运行工具中重跑脚本测试,去掉一些无用或异常的测试命令。
结束录制后,选择用例test01右侧的三个点即可弹出选择列表。
导出脚本
导出可以选择Java、JavaScript、python等语言,这里我们以python为例
PyCharm中的配置
安装PyCharm模块selenium
用PyCharm打开导出的python文件,源代码如下:
# Generated by Selenium IDE import pytest import time import json from selenium import webdriver from selenium.webdriver.common.by import By from selenium.webdriver.common.action_chains import ActionChains from selenium.webdriver.support import expected_conditions from selenium.webdriver.support.wait import WebDriverWait from selenium.webdriver.common.keys import Keys from selenium.webdriver.common.desired_capabilities import DesiredCapabilities
class TestTest01(): def setup_method(self, method): self.driver = webdriver.Chrome() self.vars = {}
def teardown_method(self, method): self.driver.quit()
def test_test01(self): self.driver.get("https://www.baidu.com/") self.driver.set_window_size(1088, 816) self.driver.find_element(By.ID, "kw").send_keys("selenium") self.driver.find_element(By.ID, "kw").send_keys(Keys.ENTER)
|
去掉无用的脚本
添加浏览器驱动
l 先去浏览器设置里看一下自己的浏览器版本;
l 再下载对应的驱动;
l 修改浏览器驱动的路径,后面路径换成自己的路径就可以了
l 最后运行程序就会自动打开浏览器进行相应的测试操作
使用Selenium进行Python开发
环境安装
下载安装selenium
pip install selenium -i https://mirrors.aliyun.com/pypi/simple/
浏览器创建
Selenium支持非常多的浏览器,如Chrome、Firefox、Edge等,还有Android、BlackBerry等手机端的浏览器。另外,也支持*面浏览器PhantomJS。
from selenium import webdriver
browser = webdriver.Chrome()
browser = webdriver.Firefox()
browser = webdriver.Edge()
browser = webdriver.PhantomJS()
browser = webdriver.Safari()
元素定位
webdriver 提供了一系列的元素定位方法,常用的有以下几种:
定位一个元素 |
定位多个元素 |
含义 |
find_element_by_id |
find_elements_by_id |
通过元素id定位 |
find_element_by_name |
find_elements_by_name |
通过元素name定位 |
find_element_by_xpath |
find_elements_by_xpath |
通过xpath表达式定位 |
find_element_by_link_text |
find_elements_by_link_tex |
通过完整超链接定位 |
find_element_by_partial_link_text |
find_elements_by_partial_link_text |
通过部分链接定位 |
find_element_by_tag_name |
find_elements_by_tag_name |
通过标签定位 |
find_element_by_class_name |
find_elements_by_class_name |
通过类名进行定位 |
find_elements_by_css_selector |
find_elements_by_css_selector |
通过css选择器进行定位 |
注意:
1、find_element_by_xxx找的是第一个符合条件的标签,find_elements_by_xxx找的是所有符合条件的标签。
2、根据ID、CSS选择器和XPath获取,它们返回的结果完全一致。
3、另外,Selenium还提供了通用方法find_element(),它需要传入两个参数:查找方式By和值。实际上,它就是find_element_by_id()这种方法的通用函数版本,比如find_element_by_id(id)就等价于find_element(By.ID, id),二者得到的结果完全一致。
实例演示
假如有一个web页面,通过前端工具查看到一个元素的属性是这样的。
<html
<head
<body link="#0000cc"
<a href="/" rel="external nofollow" onmousedown="return c({'fm':'tab','tab':'logo'})"
<form name="f" action="/s"
<span </span
<input name="wd" value="" maxlength="255" autocomplete="off"
通过id定位:
dr.find_element_by_id("kw")
通过name定位:
dr.find_element_by_name("wd")
通过class name定位:
dr.find_element_by_class_name("s_ipt")
通过tag name定位:
dr.find_element_by_tag_name("input")
通过xpath定位,xpath定位有N种写法,这里列几个常用写法:
dr.find_element_by_xpath("//*[@]")
dr.find_element_by_xpath("//*[@name='wd']")
dr.find_element_by_xpath("//input[@]")
dr.find_element_by_xpath("/html/body/form/span/input")
dr.find_element_by_xpath("//span[@]/input")
dr.find_element_by_xpath("//form[@]/span/input")
dr.find_element_by_xpath("//input[@ and @name='wd']")
通过css定位,css定位有N种写法,这里列几个常用写法:
dr.find_element_by_css_selector("#kw")
dr.find_element_by_css_selector("[name=wd]")
dr.find_element_by_css_selector(".s_ipt")
dr.find_element_by_css_selector("html body form span input")
dr.find_element_by_css_selector("span.soutu-btn input#kw")
dr.find_element_by_css_selector("form#form span input")
假如页面上有如下一组文本链接
<a href="http://news.baidu.com" rel="external nofollow" name="tj_trnews" 新闻</a
<a href="http://www.hao123.com" rel="external nofollow" name="tj_trhao123" hao123</a
通过link text定位:
dr.find_element_by_link_text("新闻")
dr.find_element_by_link_text("hao123")
通过partial link text定位:
dr.find_element_by_partial_link_text("新")
dr.find_element_by_partial_link_text("hao")
dr.find_element_by_partial_link_text("123")
控制浏览器
常用的控制浏览器操作的一些方法
方法 |
说明 |
set_window_size() |
设置浏览器的大小 |
back() |
控制浏览器后退 |
forward() |
控制浏览器前进 |
refresh() |
刷新当前页面 |
clear() |
清除文本 |
send_keys (value) |
模拟按键输入 |
click() |
单击元素 |
submit() |
用于提交表单 |
get_attribute(name) |
获取元素属性值 |
is_displayed() |
设置该元素是否用户可见 |
size |
返回元素的尺寸 |
text |
获取元素的文本 |