今天想跟大家分享的是:关于 selenium 的自动化测试一些基础的东西
安装环境
1.Python 环境安装完成后通过 Windows 命令提示符 CMD 输入“python”,查看是否安装成功
2. 安装 setuptools 与 pipsetuptools 是 PEAK(Python enterprise Application Kit)的一个副项目,是 python 的 distutilsde 的增强工具,可以更方便创建和发布 python 包,特别是对其他包有依赖的情况;pip 是一个安装和管理 python 包的工具,通过 pip 来安装 python 包将变得很简单,省去了繁琐的过程,pip 的安装依赖于 setuptools,安装 pip 之前需要先安装 setuptools;
3. 下载 selenium 包 pip install selenium
4. 下载浏览器驱动火狐和谷歌各有各的驱动下载链接:https://www.seleniumhq.org/do…
简单示例
示例名称:test_python_org_search.py
import unittest
#引入 unittest 模块是基于 JAVA JUnit 的 Python 内置的模块。该模块提供了一个框架去组织测试用例
from selenium import webdriver
#selenium.webdriver 模块提供了所有 WebDriver 的实现
from selenium.webdriver.common.keys import Keys
# Keys 类提供所有的键盘按键操作
class PythonOrgSearch(unittest.TestCase):
#测试类继承自 unittest.TestCase. 继承 TestCase 类是告诉 unittest 模块该类是一个测试用例
def setUp(self):
self.driver = webdriver.Firefox()
#SetUp 方法是初始化的一部分, 创建了一个 Firefox WebDriver 的一个实例
def test_search_in_python_org(self):
driver = self.driver
driver.get(“http://www.python.org”)
#driver.get 方法将会根据方法中给出的 URL 地址打开该网站
self.assertIn(“Python”, driver.title)
#使用 assert 断言的方法判断在页面标题中是否包含“Python”
elem = driver.find_element_by_name(“q”)
#找到 name 为 q 的 DOM 节点
elem.send_keys(“pycon”)
#在 name 为 q 的 DOM 节点中, 输入 pycon
elem.send_keys(Keys.RETURN)
#按 enter 键
assert “No results found.” not in driver.page_source
def tearDown(self):
self.driver.close()
#tearDown 方法会在每一个测试方法执行之后被执行。该方法可以用来做一些清扫工作,比如关闭浏览器。当然你也可以调用 quit 方法代替 `close` 方法
#区别:quit 将关闭整个浏览器,而 `close` 只会关闭一个标签页
if __name__ == “__main__”:
unittest.main()
#入口函数
可直接在 shell 中运行:python test_python_org_search.py
常用方法讲解
1. 打开一个页面 driver.get(“http://www.baidu.com”)WebDriver 将等待,直到页面完全加载完毕(其实是等到 onload 方法执行完毕),然后返回继续执行你的脚本。值得注意的是,如果你的页面使用了大量的 Ajax 加载,WebDriver 可能不知道什么时候页面已经完全加载。
2. 与页面交互 WebDriver 提供了大量的方法帮助你去查找元素, 例如
<input type=”text” name=”passwd” id=”passwd-id” />
可通过以下方法查找:
element = driver.find_element_by_id(“passwd-id”)
element = driver.find_element_by_name(“passwd”)
element = driver.find_element_by_xpath(“//input[@id=’passwd-id’]”)
你还可以通过链接的文本查找他,需要注意的是,这个文本必须完全匹配。当你使用 XPATH 时,你必须注意,如果匹配超过一个元素,只返回第一个元素。如果上面也没找到,将会抛出 NoSuchElementException 异常。
执行一些操作,例如在文本框中输入一些内容:element.send_keys(“some text”) 清除内容:element.clear()
选择下拉框:WebDriver 的支持类有一个叫做 Select 的类 from selenium.webdriver.support.ui import Selectselect.select_by_index(index) 根据 option 的顺序 select.select_by_visible_text(“text”) 根据文本 select.select_by_value(value) 根据它的 value 值
取消选择:select.deselect_all()
提交选择:element.submit()
3. 拖放
element = driver.find_element_by_name(“source”)
target = driver.find_element_by_name(“target”)
from selenium.webdriver import ActionChains
action_chains = ActionChains(driver)
action_chains.drag_and_drop(element, target).perform()
4. 弹出对话框处理方式 alert = driver.switch_to_alert()switch_to_alert() #定位弹出对话 text() #获取对话框文本值 accept() #相当于点击 ” 确认 ”dismiss() #相当于点击 ” 取消 ”send_keys() # 输入值,这个 alert 和 confirm 没有输入对话框,所以这里就不能用了,所以这里只能使用在 prompt 这里。
5. 操作 cookie 打开一个页面 driver.get(“http://www.example.com”) 现在设置 Cookies,这个 cookie 在域名根目录下(”/”)生效 cookie = {‘name’:‘foo’,‘value’:‘bar’} driver.add_cookie(cookie) 现在获取所有当前 URL 下可获得的 Cookies driver.get_cookies()
6. 查找元素 find_element_by_idfind_element_by_namefind_element_by_xpathfind_element_by_link_textfind_element_by_partial_link_textfind_element_by_tag_namefind_element_by_class_namefind_element_by_css_selector
以上是 selenium 相关的基础内容,下一期更新使用页面对象模式的示例, 一起越来越好.