web自动化测试之selenium

一.selenium的常用操作

1)库的导入
	from selenium import  webdriver

2)创建浏览器对象
	
	driver = webdriver.xxx()
	
	使用dir(driver)查看方法

3)浏览器尺寸相关操作
	
	maximize_window()		最大化
	
	get_window_size()		获取浏览器尺寸

	set_window_size()		设置浏览器尺寸
4)浏览器位置相关操作
			
	get_window_position()		获取浏览器位置

	set_window_position(x,y)		设置浏览器位置
	
	注:显示器以左上角为(0,0),所有的位置操作都是相对于显示器左上角
	展开的位移操作,单位是像素。

5)浏览器的关闭操作
	
	close()			关闭当前标签/窗口

	quit()			关闭所有标签/窗口
6)页面请求操作
	
	driver.get(url)		请求某个url对应的响应
	refresh()				刷新页面操作
	back()				回退到之前的页面
	forward()				前进到之后的页面

二.selen的断言

1.什么是断言

断言是编程术语,表示为一些布尔表达式,程序员相信在程序中的某个特定点该表达式值为真,可以在任何时候启用和禁用断言验证,因此可以在测试时启用断言而在部署时禁用断言。

2.断言信息的操作
	current_url				获取当前访问页面url

	title				获取当前浏览器标题

	get_screenshot_as_png()           保存图片

	get_screenshot_as_file(file)       直接保存
	
	page_source	              网页源码

三.元素的定位

1.元素定位方法的分类(调用方式)
	1.直接调用型(推荐方式)
		driver.find_element_by_xxx(value)
	
	2.使用By类型(需要导入By)
		from selenium.webdriver.common.by import By
		driver.find_element(By.xxx,value)
2.元素定位方法的分类

在这里插入图片描述

3.元素定位的八种定位方式
	1. driver.find_element_by_xpath(value)
		
	2. driver.find_element_by_css_selector(value)

	3. driver.find_element_by_id(value)
			
	4. driver.find_element_by_name(value)
	5. driver.find_element_by_class_name(value)
		
	6. driver.find_element_by_tag_name(value)

	7. driver.find_element_by_link_text(value)
		
	8 driver.find_element_by_partial_link_text(value)
4.元素的操作

对元素的相关操作,一般要先获取到元素,再调用相关方法
element = driver.find_element_by_xxx(value)

1)点击和输入

	点击操作
		element.click()
	
	清空/输入操作(只能操作可以输入文本的元素)
		element.clear()			清空输入框
		element.send_keys(data)		输入数据

四.Selenium API高级

1.多标签之间的切换
场景:有的时候点击一个链接,新页面并非由当前页面跳转过去,
而是新开一个页面打开,这种情况下,计算机需要识别多标签或窗口的情况。
	1)获取所有窗口的句柄

	handles = driver.window_handlers
	调用该方法会得到一个列表,在selenium运行过程中的每一个窗口
	都有一个对应的值存放在里面。

2)通过窗口的句柄进入的窗口

	driver.switch_to_window(handles[n])
	
	driver.switch_to.window(handles[n])

	通过窗口句柄激活进入某一窗口
2.多表单切换

在网页中,表单嵌套是很常见的情况,尤其是在登录的场景
1)什么是多表单?
实际上就是使用iframe/frame,引用了其他页面的链接,真正的页面数据并没有出现在当前源码中,但是在浏览器中我们看到,简单理解可以使页面中开了一个窗口显示另一个页面

2)处理方法
	直接使用id值切换进表单
		driver.switch_to.frame(value)/driver.switch_to_frame(value)

	定位到表单元素,再切换进入
		el = driver.find_element_by_xxx(value)
		driver.switch_to.frame(el)	/driver.switch_to_frame(el)
3.弹出框操作
 1) 进入到弹出框中
	driver.switch_to.alert

2) 接收警告
	accept()

3) 解散警告
	dismiss()

4) 发送文本到警告框
	send_keys(data)
4.鼠标和键盘操作
手动测试时键盘的操作在selenium页有实现,
关于鼠标的操作由ActionChains()类来提供,
关于键盘的操作由Key()类来提供

1)鼠标操作

	* 导入动作链类,动作链可以储存鼠标的动作,并一起执行
	from selenium.webdriver import ActionChains
	ActionChains(driver)
		
	* 鼠标右击
		el = driver.find_element_by_xxx(value)
		context_click(el)
		对el执行右击
	* 执行ActionChains中储存的所有动作
		perform()
	例如:
ActionChains(driver).context_click(ele).perform()  点击鼠标右键      
ActionChains(driver). double_click(ele).perform()  点击鼠标左键
ActionChains(driver).move_to_element(el).perform()  鼠标悬停


2)键盘操作
键盘操作使用的是Keys类,一般配合send_keys使用
* 导入
	from selenium.webdriver.common.keys import Keys

	* 常用键盘操作
		send_keys(Keys.BACK_SPACE) 	删除键(BackSpace)
		
		send_keys(Keys.SPACE) 		空格键(Space)
		
		send_keys(Keys.TAB) 			制表键(Tab)
		
		send_keys(Keys.ESCAPE) 		回退键(Esc)
		
		send_keys(Keys.ENTER) 		回车键(Enter)
		
		send_keys(Keys.CONTROL,‘a’) 	全选(Ctrl+A)
	3)键盘操作
	* 常用键盘操作
		send_keys(Keys.CONTROL,‘a’) 	全选(Ctrl+A)
		
		send_keys(Keys.CONTROL,‘x’) 	剪切(Ctrl+X)
		
		send_keys(Keys.CONTROL,‘v’) 	粘贴(Ctrl+V)
		
		send_keys(Keys.F1) 			键盘 F1
		……
		send_keys(Keys.F12) 			键盘 F12
	
	案例:
		必应搜索执行键盘操作
5.浏览器等待
1) 为什么要进行等待?
	
	1.网速慢

	2.网站内容过多

	3.如果不进行等待而直接定位元素,可能会抛出异常

2) selenium中等待的分类:
	
	显示等待
	
	隐式等待
	3) 显示等待
	显示等待是根据条件进行等待,等待条件出现
	
	实现:
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

WebDriverWait(driver, timeout, poll_frequency=0.5, ignored_exceptions=None)
					        		
    WebDriverWait类是由WebDirver 提供的等待方法。在设置时间内,
	默认每隔一段时间检测一次当前页面元素是否存在,如果超过设置
	时间检测不到则抛出异常。
	
	WebDriverWait(driver,10,0.5).until(EC.presence_of_element_located(
(By.CLASS_NAME,"g-hu")))
4)隐式等待
	隐式等待是根据是件进行等待,等待特定时间

		driver.implicitly_wait(n)

	n的单位为秒,n为最大值,在这个最大值内只要该界面上的全部元素
	都加载完成定就结束没有加载出元素就抛出	NosuchException.
	优先 隐式等待 	次之 显式等待 最次 固定等待

( ̄▽ ̄)~*------ ٩(๑❛ᴗ❛๑)۶谢谢阅读!!!!!!!!!!!!!!!

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值