1、自动化测试环境搭建之selenium3安装
方法1:cmd环境下,用pip install selenium (速度很慢,不推荐)
方法2:下载selenium安装包手动安装
下载地址:https://pypi.org/project/selenium/
在解压好的目录下进行安装 python setup.py install
Selenium验证安装
使用selenium打开firefox浏览器
需要下载对应的驱动(https://github.com/mozilla/geckodriver/releases)
下载driver后、拷贝到浏览器安装路径、配置环境变量
配置环境变量,需要重启cmd窗口
from selenium import webdriver
driver = webdriver.Firefox() --打开火狐浏览器
driver.get("http://www.baidu.com") --打开百度
2、自动化测试需了解的前端知识
html: 网页基础,用于显示数据
js: 网页脚本,控制页面的数据
css: 用于控制文件样式
xml: 用来传输和存储数据
json: 用来传输和存储数据
http: 网络请求协议
xpath:(XML Path Language)是一种用于在XML文档中导航和查询节点的语言,广泛应用于XML数据处理、Web抓取和自动化测试等领域
3、Selenium之定位网页元素
1、开启浏览器
browser = webdriver.Firefox();
2、打开网页
browser.get("http://baidu.com")
--使用python判断是否正确
browser.title 或者 browser.current_url
3、定位元素的方法
id: find_element_by_id() 采用id属性进行定位
name: find_element_by_name() 定位方式和id定位相似,id、name和class一般在网页都至少会有其中的一种
class name: find_element_by_class_name() 定位方式和id定位相似,id、name和class一般在网页都至少会有其中的一种
link text: find_element_by_link_text() 超链接内容定位,元素内容
如 <a href="#">xxx </a>,则find_element_by_link_text("xxx")
--引入等待时间
from time import sleep
sleep(5)
partial link text:find_element_by_partial_link_text() 超链接内容定位,模糊匹配,和上面类似
4、定位元素后的方法
clear() //清空
send_keys() // 输入
back() //后退页面
maximize_window() // 最大化窗口
click() //点击事件,点击按钮,超链接
submit() //提交表单
5、定位元素后的属性
tag_name //标签名
text //文本内容
6、CSS定位
css selector:find_element_by_css_selector()
根据CSS属性定位,一般class是用.标记,id是用#标记,定位方式也会比xpath快
如 find_element_by_css_selector('input[id=\'search\']') // 规则: 元素[属性=值]
技巧:通过firebug的拷贝css路径
路径:审查元素-》右键-》复制-》css选择器
7、xpath定位
xpath :find_element_by_xpath()
xpath是XML路径语言,通过元素的路径来完成对元素的查找,HTML就是XML的一种实现方式,在FriePath插件里copy对应的xpath地址
绝对路径定位:从<html>标签开始依次往下进行查找
相对路径:利用元素属性来进行xpath定位
技巧:通过firebug的拷贝css路径
8、弹窗处理(alert和comfirm)
需要先切换窗口 switch_to_alert()
accept() 表示接受
dismiss() 表示取消
driver.find_element_by_id("confirm").click()
#切换到弹窗
confirm_ele = driver.switch_to_alert()
sleep(2)
#confirm_ele.accept()
confirm_ele.dismiss()
4、模拟用户登录
# -*- coding: utf-8 -*-
from selenium import webdriver
from time import sleep
from selenium.webdriver.common.action_chains import ActionChains
#拿到diver
driver = webdriver.Firefox()
#跳转网页
driver.get("https://yuming.com")
print(driver.title)
#强制睡眠时间3秒
sleep(3)
# 隐性等待,最长等10秒
#driver.implicitly_wait(10)
#登录框
login_ele = driver.find_element_by_css_selector("#login")
#触发点击事件
ActionChains(driver).click(login_ele).perform()
sleep(1)
#查找输入框,输入账号,输入框要提前清理里面的数据
driver.find_element_by_id("phone").clear()
driver.find_element_by_id("phone").send_keys("username123")
#查找密码输入框,输入密码
driver.find_element_by_id("pwd").clear()
driver.find_element_by_id("pwd").send_keys("123456")
#拿到登录按钮
login_btn_ele = driver.find_element_by_css_selector("button.login")
#触发点击事件,登录
login_btn_ele.click()
#判断登陆是否成功,逻辑-》鼠标移到上面,判断弹窗字符
#获取鼠标上移的元素
user_info_ele = driver.find_element_by_css_selector(".user_head_portrait")
sleep(1)
#hover触发
ActionChains(driver).move_to_element(user_info_ele).perform()
sleep(1)
#获取用户名称元素
user_name_ele = driver.find_element_by_css_selector(".img_name > span:nth-child(2)")
print("===测试结果==")
print(user_name_ele.text)
name = user_name_ele.text
if name == u"用户名XXX": #中文加‘u’,防止乱码
print("login ok")
else:
print("login fail")