Web自动化测试模拟用户进行真实业务操作,常用操作除了点击,输入文本,还有几下几种:
- 刷新页面: driver.refresh()
- 获取浏览器窗口大小:driver.get_window_size()
- 设置浏览器窗口大小:driver.set_window_size()
- 浏览器最大化窗口:driver.maximize_window()
- 浏览器全屏:driver.fullscreen_window()
- 获取浏览器窗口个数:driver.get_window_handle,返回的是一个列表
- 切换到指定窗口: driver.switch_to.window()
- 前进:driver.forward()
- 后退:driver.back()
- 关闭:driver.close() 关闭当前窗口
- 退出:driver.quit() 完全退出浏览器
- 上传文件:send_keys()
- alert弹窗,confirm弹窗处理
- 获取当前title/url/源代码 :driver.title()、driver.current_url()、 driver.page_source
浏览器窗口大小设置
# -*- coding: utf-8 -*-
# @Time : 2021/7/20 14:09
# @Author : 一诺教育
from selenium import webdriver
# 驱动打开谷歌浏览器
driver = webdriver.Chrome()
# 访问网址
driver.get("https://www.baidu.com")
#获取浏览器窗口大小
size=driver.get_window_size()
# 运行结果:浏览器窗口大小为: {'width': 1051, 'height': 806}
print('浏览器窗口大小为:',size)
#设置浏览器窗口宽为900,高为500
driver.set_window_size('900','500')
#浏览器窗口最大化
driver.maximize_window()
#浏览器窗口最小化
driver.switch_to.window()
#浏览器全屏
driver.fullscreen_window()
浏览器窗口切换
from selenium import webdriver
# 驱动打开谷歌浏览器
driver = webdriver.Chrome()
# 访问百度首页
driver.get("https://www.baidu.com")
#点击百度首页中的"新闻",在当前浏览器打开了一个新的窗口
driver.find_element_by_xpath('//*[@id="s-top-left"]/a[1]').click()
# 1.获取当前窗口个数
handles = driver.window_handles # 返回的是一个列表
print(handles)
#2.切换到第二个窗口,窗口索引从0开始, 1代表第二个窗口
driver.switch_to.window(handles[1]) # 切换窗口
# 打印当前窗口的url
print(driver.current_url)
执行结果:
#返回了窗口个数的列表,2个window代表当前俩个窗口
['CDwindow-FF716406C16960EAA7D5419B21BFC15A', 'CDwindow-42656592A040F3A485F7A1D8F1C23FBA']
http://news.baidu.com/ #切换到新窗口的url
案例环境准备:
下面是一个包含文件上传、alert、confirm弹窗的网页,把以下html代码拷贝到一个新建文本文档中,可以取名为test.html,放到桌面
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>练习selenium定位元素页面</title>
<style type="text/css">
table{font-size:26px;text-align:center;width:80%;border-collapse:collapse;margin:auto}
table th{background: #aff}
.display{color:red}
.widgetStyle{text-align:left;padding-left:100px}
</style>
<script language= "javascript" type="text/javascript">
function clickbutton(flag)
{
if (flag == 1) alert("测试alert对话框");
if (flag == 2)
{
var name=prompt("测试prompt对话框","");
if (name!=null && name!="")
{
//document.write(name);
alert(name);
}
}
if (flag == 3)
{
var r=confirm('测试confirm对话框', '测试confirm对话框?',"测试结果:")
if (r==true)
{
//document.write("You pressed OK!")
alert("You pressed OK!");
}
else
{
//document.write("You pressed Cancel!")
alert("You pressed Cancel!");
}
}
if (flag == 4)
alert(document.getElementById("edit").value);
}
function getOptions()
{
var x=document.getElementById("Selector");
var y=x.options[x.selectedIndex].text
// document.write(y);
alert(y);
}
</script>
</head>
<body>
<p>welcome{{username}}</p>
<h3>测试执行页面</h3>
<center>
</br>
<div>
<p>
<div class="text" style="font-size:36px;text-align:center"><b>定位元素练习</b></div>
</p>
<hr>
</div>
<p>
<table id="testtable" cellpadding="10" cellspacing="0" border="2">
<thead>
<tr>
<th width=20% class="widgetleft">测试内容</th>
<th width=80% class="widgetStyle">页面基本元素</th>
</tr>
</thead>
<tr>
<td>文件上传</td>
<td><input type="file" id="files" name="attach[]" /></td>
</tr>
<tr>
<td>alter对话框</td>
<td>
<input type="button" name="alterbutton" value="测试alter对话框" onclick = "clickbutton(1);" />
</td>
</tr>
<tr>
<td>confirm对话框</td>
<td>
<input type="button" name="confirmbutton" value="测试confirm对话框" onclick = "clickbutton(3);" />
</td>
</tr>
</table>
</p>
</center>
</body>
</html>
上传文件:
1. input标签
input标签是可以直接send_keys()方法实现上传的:
from selenium import webdriver
# 驱动打开谷歌浏览器
driver = webdriver.Chrome()
# 访问本地html文件
driver.get("file:///C:/Users/admin/Desktop/test.html")
#定位到上传文件input标签
files=driver.find_element_by_id('files')
#传入文件路径
files.send_keys(r'C:\Users\admin\Desktop\图片\logo1.png')
2.非input标签
如果上传文件标签不是input框实现,比如是a标签/div/button的,就只能打开windows系统的弹框,去处理弹框。解决方案有几下几种:
- Python pywin32库
- SendKeys库
- autoIT
- keybd_event
alert弹窗处理
# @Author : 一诺教育
import time
from selenium import webdriver
# 驱动打开谷歌浏览器
driver = webdriver.Chrome()
# 访问本地html文件
driver.get("file:///C:/Users/admin/Desktop/test.html")
#点击页面alert弹窗
driver.find_element_by_name('alterbutton').click()
time.sleep(3)
#点击确定关闭弹窗
driver.switch_to.alert.accept()
confirm弹窗处理
# @Author : 一诺教育
import time
from selenium import webdriver
# 驱动打开谷歌浏览器
driver = webdriver.Chrome()
# 访问本地html文件
driver.get("file:///C:/Users/admin/Desktop/test.html")
#点击页面confirm弹窗
driver.find_element_by_name('confirmbutton').click()
time.sleep(3)
#点击“确定”
driver.switch_to.alert.accept()
#点击“取消”
#driver.switch_to.alert.dismiss()
获取当前title/url/源代码
#获取当前页面url
url=driver.current_url
print("url是:",url)
#获取当前页面title
title=driver.title
print("title是:",title)
#获取当前页面源代码
source=driver.page_source
print("源代码是:",source)