关于自动化测试其实很多时候都是为了节省时间做一些大批量的复用性工作,在正式学习自动化脚本编写之前,这里引用陈建忠老师的博客内容,希望大家能了解一下关于什么是自动化的知识,在日后做自动化测试的过程中会根据不同的项目、不同的需求、不同的测试内容制定合理的自动化测试方案。
前面学习了很多对于写代码进行铺垫的内容,从这一章节开始我们就要学习如何去使用selenium+python对网页进行点击、输入、下拉、刷新等基本操作。
1、如何使用selenium+python打开火狐浏览器并进入百度
#coding:utf-8
'''utf-8为中文编码格式
调用selenium模块中webdriver浏览器驱动
调用时间模块'''
from selenium importwebdriverimporttime
driver=webdriver.Firefox()#driver = webdriver.Ie()#ie浏览器驱动调用方法#driver = webdriver.Chrome()#谷歌浏览器驱动调用方法
driver.get("https://www.baidu.com")
2.设置休眠时间(运行时会等待3S,一般设置时间是为了等待打开页面加载完成)
#coding:utf-8
'''utf-8为中文编码格式
调用selenium模块中webdriver浏览器驱动
调用时间模块'''
from selenium importwebdriverimporttime
driver=webdriver.Firefox()#driver = webdriver.Ie()#ie浏览器驱动调用方法#driver = webdriver.Chrome()#谷歌浏览器驱动调用方法
driver.get("https://www.baidu.com")
time.sleep(3)#设置休眠时间为3S
3.隐性等待(该方法为设置一个远超页面加载时间的范围,如页面加载需要20s,设置时将加载时间设置为30S,该方法会判断页面加载完成直接进行下一步操作)
#coding:utf-8
'''utf-8为中文编码格式
调用selenium模块中webdriver浏览器驱动
调用时间模块'''
from selenium importwebdriverimporttime
driver=webdriver.Firefox()#driver = webdriver.Ie()#ie浏览器驱动调用方法#driver = webdriver.Chrome()#谷歌浏览器驱动调用方法
driver.get("https://www.baidu.com")
implicitly_wait(30)#设置隐性等待时间
implicitly_wait()比time.sleep更加智能,time.sleep只能选择一个固定的等待时间,implicitly_wait()可以在一个时间范围内进行等待。
implicitly_wait()的缺点为页面加载时间可能过长,随着ajax技术的广泛应用,现在网页中各元素内容可以实现逐步加载,可能我们所需要的元素已经加载出来,但是对于隐性等待的方法来说,它需要等待整个网页加载完毕才能进行下一步,所以需要的时间可能过长,延长执行过程时间。
3、显性等待(WebDriverWait)
显性等待会根据预加条件对某一个元素进行判断,经过多少秒对该元素进行查找,如果该元素已经加载出来则直接进行下一步,如果该元素没有加载出来则继续等待元素加载,也可用该方法设定某个元素在规定时间内不可见,具体根据自己的测试需求定制测试方案。
#coding:utf-8
'''utf-8为中文编码格式
调用selenium模块中webdriver浏览器驱动
调用时间模块'''
from selenium importwebdriverimporttimefrom selenium.webdriver.support.wait importWebDriverWaitfrom selenium.webdriver.support importexpected_conditions as ECfrom selenium.webdriver.common.by importBy
driver=webdriver.Firefox()
driver.get('https://huilansame.github.io')
WebDriverWait(driver,20,0.5).until(
EC.presence_of_element_located((By.LINK_TEXT,'CSDN')))print (driver.find_element_by_link_text('CSDN').get_attribute('href'))
driver.close()
4、页面刷新(需要在特定内容的界面没有加载出来时或其他场景中进行页面刷新操作)
#coding:utf-8
'''utf-8为中文编码格式
调用selenium模块中webdriver浏览器驱动
调用时间模块'''
from selenium importwebdriverimporttime
driver=webdriver.Firefox()#driver = webdriver.Ie()#ie浏览器驱动调用方法#driver = webdriver.Chrome()#谷歌浏览器驱动调用方法
driver.get("https://www.baidu.com")
driver.refresh()#对当前页面进行刷新
5.浏览器窗口放大及缩小(我们在使用浏览器的过程中可能需要点击有上角的□对浏览器进行放大或者缩小操作,当然了,selenium也可以给我们提供相应的方法对浏览器进行各种比较人性化的操作。)
#coding:utf-8
'''utf-8为中文编码格式
调用selenium模块中webdriver浏览器驱动
调用时间模块'''
from selenium importwebdriverimporttime
driver=webdriver.Firefox()#driver = webdriver.Ie()#ie浏览器驱动调用方法#driver = webdriver.Chrome()#谷歌浏览器驱动调用方法
driver.get("https://www.baidu.com")
time.sleep(3)#自定义设置浏览器窗口大小
driver.set_window_size(600*960)
time.sleep(2)#设置浏览器窗口最大化
driver.maximize_window()#设置浏览器窗口最小化
driver.minimize_window()
6、前进或后退至某一个页面
#coding:utf-8
'''utf-8为中文编码格式
调用selenium模块中webdriver浏览器驱动
调用时间模块'''
from selenium importwebdriverimporttime
driver=webdriver.Firefox()#driver = webdriver.Ie()#ie浏览器驱动调用方法#driver = webdriver.Chrome()#谷歌浏览器驱动调用方法
driver.get("https://www.baidu.com")
time.sleep(3)#在输入框中搜索“知乎”
driver.find_element_by_id("kw").sendkey("知乎")#点击“百度一下”按钮进行搜索
driver.find_element_by_id("su").click#等待3S
time.sleep(3)#点击下一页按钮
driver.find_element_by_class_name("n")#返回上一页
driver.back()
time.sleep(3)#切换到下一页
driver.forward()
7、关闭窗口(根据测试场景的不同需要进行不同的操作,driver.quit()可以杀死当前浏览器进程,driver.close()可以关闭当前浏览器窗口)
#coding:utf-8
'''utf-8为中文编码格式
调用selenium模块中webdriver浏览器驱动
调用时间模块'''
from selenium importwebdriverimporttime
driver=webdriver.Firefox()#driver = webdriver.Ie()#ie浏览器驱动调用方法#driver = webdriver.Chrome()#谷歌浏览器驱动调用方法
driver.get("https://www.baidu.com")
time.sleep(3)#关闭浏览器进程
driver.quit()#关闭当前窗口#driver.close()
8、截图(截图方法为get_screenshot_as_file可以在浏览器中使用截图操作,在括号中需要配置截图地址及文件名称和文件格式。)
#coding:utf-8
'''utf-8为中文编码格式
调用selenium模块中webdriver浏览器驱动
调用时间模块'''
from selenium importwebdriverimporttime
driver=webdriver.Firefox()#driver = webdriver.Ie()#ie浏览器驱动调用方法#driver = webdriver.Chrome()#谷歌浏览器驱动调用方法
driver.get("https://www.baidu.com")
time.sleep(3)
driver.get_screenshot_as_file("C\\test\\123.jpg")