适合项目:
- 测试任务明确,不会频繁变动
- 每日构建后的测试验证
- 比较频繁的回归测试
- 软件系统界面稳定,变动少
- 需要在多平台上运行相同测试案例、组合遍历型的测试,大量的重复任务;
- 软件维护周期长;
WebDriver API
-
定位元素 (定位一组元素为find_elements_)
- 根据ID find_element_by_id()
- 根据Name find_element_by_name()
- 根据Class find_element_by_class_name()
- 根据tag find_element_by_tag_name() tag包括<div> <input>
- 根据连接link
- 例如 <a class="demo" name="test" href="http://www.baidu.com">百度</a>
- 全名 find_element_by_link_text("百度")
- 模糊 find_element_by_partial_link_text("百")
- 根据XPath定位
- 绝对路径定位 find_element_by_xpath("/html/body/div/input[1]") html元素的路径
- 元素属性定位 find_element_by_xpath("//input[@id='kw']")
- 使用逻辑运算 find_element_by_xpath("//input[@id='kw' and @class='demo']")
- 使用谷歌浏览器调试,在元素上右键-Copy-Copy XPath
- 根据css find_element_by_css_selector()
- 有点像JQ,find_element_by_css_selector(".demo") #kw span>input
- 使用谷歌浏览器调试,在元素上右键-Copy-Copy selector
-
支持的浏览器
- browser=webdriver.Chrome()
- browser=webdriver.Firefox()
- browser=webdriver.Edge() # Microsoft Edge
- browser=webdriver.Safari()
- browser=webdriver.Android()
- browser=webdriver.BlackBerry()
- browser=webdriver.Ie()
- browser=webdriver.Opera()
- browser=webdriver.PhantomJS()
-
控制浏览器 driver=webdriver.Chrome(); webdriver.Chrome()
- 访问 driver.get(url);
- 后腿 driver.back()
- 前进 driver.forward()
- 关闭 driver,quit();
- 刷新 driver.refresh()
-
简单元素操作
- clear() 清除文本
- send_keys(*value) 模拟按键输入
- click() 单元元素
- submit() 表单提交
- size() 返回元素尺寸
- text() 获取文本
- get_attribute(name) 获取属性值 类似jq的attr
- is_displayed() 是否可见
-
鼠标事件 引入 from selenium.webdriver.common.action_chains import ActionChains
- 常用方法
- perform 执行所有ActionChains中储存的行为,类似委托
- context_click() 右击
- double_click() 双击
- drag_and_drop(source,target) 拖动:在源元素上按住鼠标左键,然后移动到目标元素上释放
- move_to_element() 鼠标悬浮
- 操作流程
- button=driver. find_element_by_id('kw');
- ActionChains(driver).context_click(button).perform();
- 常用方法
-
键盘事件 from selenium.webdriver.common.keys import Keys
- send_keys(value) 输入框输入内容
- send_keys(Keys.BACK_SPACE) 删除键
- send_keys(Keys.SPACE) 空格键
- send_keys(Keys.TAB) Tab
- send_keys(Keys.ESCAPE) 回退
- send_keys(Keys.ENTER) 回车
- send_keys(Keys.CONTROL,'a') 全选、复制粘贴类似
- send_keys(Keys.F1) F1
-
获取验证信息
- driver.title 页面title
- driver.current_url 当前页面URL
-
设置元素等待
- sleep() from time import sleep 单位/秒
-
多表单切换
- 定位到iframe元素
- driver.switch_to.frame(value) iframe的id或name
- switch_to.parent_frame() 跳出当前一级表单
- switch_to.default_content() 调回最外层的页面
-
警告框处理 driver.switch_to_alert()
- text() 返回文本信息
- accept() 接受
- dismiss() 解散
-
操作Cookie
- get_cookies() 获取所有的cookie
- get_cookie(name) 返回key为name的cookie信息
- add_cookie(dict) 添加cookie, dcit是字典对象,有key、value
- delete_cookie(name,option) 删除cookie,name:cookie名称,option是cookie选项,只是路径、域
- delete_all_cookies()
-
调用js 代码
- driver.execute_script()
-
窗口截图 一般sleep再截图
- driver.getscreenshot_as_file(path) 文件路径和文件名