Web自动化测试框架Selenium在Python中的使用
Posted ProChick
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Web自动化测试框架Selenium在Python中的使用相关的知识,希望对你有一定的参考价值。
Selenium在Python中的使用
1.什么是Selenium?
- Selenium是最广泛使用的开源Web UI(用户界面)自动化测试套件之一。它最初由杰森·哈金斯(Jason Huggins)于2004年开发,作为Thought Works的内部工具。
- Selenium支持跨不同浏览器,平台和编程语言的自动化。
- Selenium可以轻松部署在Windows,Linux,Solaris和Macintosh等平台上。此外,它支持ios(IOS,Windows Mobile和android)等移动应用程序的OS(操作系统)。
- Selenium通过使用特定于每种语言的驱动程序支持各种编程语言。Selenium支持的语言包括C#,Java,Perl,php,Python和Ruby。
- Selenium支持的浏览器包括Internet Explorer,Mozilla Firefox,Google Chrome和Safari。
2.它有哪些特点?
- 开源软件:源代码开放可以根据需要来增加工具的某些功能
- 跨平台:linux 、windows 、mac
- 核心功能:就是可以在多个浏览器上进行自动化测试
- 多语言:Java、Python、C#、javascript、Ruby等
- 成熟稳定:目前已经被google , 百度, 腾讯等公司广泛使用
- 功能强大:能够实现类似商业工具的大部分功能,因为开源性,可实现定制化功能
3.测试工具WebDriver
- Webdriver (Selenium2)是一种用于Web应用程序的自动测试工具
- 它提供了一套友好的API
- Webdriver完全就是一套类库,不依赖于任何测试框架,除了必要的浏览器驱动
- WebDriver支持的浏览器有 Firefox 、IE、Opera、Chrome、safari、htmlUnit
4.浏览器相关测试操作
-
maximize_window
# 最大化浏览器 driver = webdriver.Chrome() driver.maximize_window()
-
refresh
# 刷新浏览器 driver = webdriver.Chrome() driver.refresh()
-
close
# 关闭某个浏览器窗口 driver = webdriver.Chrome() driver.close()
-
quit
# 关闭浏览器所有窗口 driver = webdriver.Chrome() driver.quit()
-
title
# 获取浏览器当前窗口的标题 driver = webdriver.Chrome() print(driver.title)
-
current_url
# 获取浏览器当前窗口的URL driver = webdriver.Chrome() print(driver.current_url)
5.HTML元素的定位操作
-
id
# 通过元素ID属性进行定位 driver.find_element_by_id()
-
name
# 通过元素name属性进行定位 driver.find_element_by_name() driver.find_elements_by_name()
-
class_name
# 通过元素class属性进行定位 driver.find_element_by_class_name() driver.find_elements_by_class_name()
-
tag_name
# 通过元素标签名进行定位 driver.find_element_by_tag_name() driver.find_elements_by_tag_name()
-
link_text
# 通过超文本链接元素<a></a>的文本进行精准定位 driver.find_element_by_link_text() driver.find_elements_by_link_text()
-
partial_link_text
# 通过超文本链接元素<a></a>的文本进行模糊定位 driver.find_element_by_partial_link_text() driver.find_elements_by_partial_link_text()
-
xpath
# 通过绝对定位进行定位 driver.find_element_by_xpath("/html/body/div/p[2]") # 通过相对定位进行定位 driver.find_element_by_xpath("//input[@id='username']") # 通过元素属性进行定位 driver.find_element_by_xpath("//*[@name='hobby'] ") # 通过层级与属性结合进行定位 driver.find_element_by_xpath("//*[@id='myfrom']/input") # 通过属性与逻辑结合进行定位 driver.find_element_by_xpath("//*[@id='password' and @name='password']")
-
css
# 通过id进行定位 driver.find_element_by_css_selector("#username") # 通过clss进行定位 driver.find_element_by_css_selector(".username") # 通过元素进行定位 driver.find_element_by_css_selector("input") # 通过属性进行定位 driver.find_element_by_css_selector("[type='hidden']") # 通过层级选择器进行定位 driver.find_element_by_css_selector("p>input")
6.HTML元素的获取操作
-
send_keys
# 输入元素的文本 username = driver.find_element_by_id("username") username.send_keys("zhangsan")
-
clear
# 清除元素的文本 username = driver.find_element_by_id("username") username.clear()
-
click
# 单击元素 button = driver.find_element_by_id("btn") button.click()
-
size
# 获取元素的大小 username = driver.find_element_by_id("username") print(username.size)
-
text
# 获取元素的文本 username = driver.find_element_by_id("username") print(username.text)
-
get_attribute
# 获取元素的属性 img = driver.find_element_by_id("picture") img.get_attribute("src")
7.HTML元素的等待操作
WebDriver定位页面元素时如果未找到,会在指定时间内一直等待的过程
-
显示等待
显式等待作用于单个元素, 方法封装在WebDriverWait类中
-
隐式等待
隐式等待作用于全局元素, 方法直接通过浏览器实例化对象调用
- 如果定位某一元素定位失败,那么就会触发隐式等待有效时长
- 如果在指定时长内加载完毕,则继续执行
- 否则抛出NoSuchElementException异常,如果元素在第一次就定位到则不会触发隐式等待时长
driver.implicitly_wait(10)
8.鼠标相关测试操作
-
context_click
from selenium.webdriver.common.action_chains import ActionChains username = driver.find_element_by_id("username") action = ActionChains(driver) # 鼠标右键点击 element = action.context_click(username) # 执行 element.perform()
-
double_click
from selenium.webdriver.common.action_chains import ActionChains username = driver.find_element_by_id("username") action = ActionChains(driver) # 鼠标双击 element = action.double_click(username) # 执行 element.perform()
-
drag_and_drop
from selenium.webdriver.common.action_chains import ActionChains div1 = driver.find_element_by_id("div1") div2 = driver.find_element_by_id("div2") action = ActionChains(driver) # 鼠标拖拽 element = action.drag_and_drop(div1, div2) # 执行 element.perform()
-
move_to_element
from selenium.webdriver.common.action_chains import ActionChains img = driver.find_element_by_id("picture") action = ActionChains(driver) # 鼠标悬停 element = action.move_to_element(img) # 执行 element.perform()
9.键盘相关测试操作
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)
send_keys(Keys.CONTROL,'c') #复制(Ctrl+C)
以上是关于Web自动化测试框架Selenium在Python中的使用的主要内容,如果未能解决你的问题,请参考以下文章
Selenium3与Python3实战 Web自动化测试框架
Selenium3与Python3实战 Web自动化测试框架
Python + Selenium,分分钟搭建 Web 自动化测试框架!
selenium+python做web端自动化测试框架与实例详解教程