测试学习2----软件自动化测试Selenium2
一、元素的定位
1. 对象的定位应该是自动化测试的核心,要想操作一个对象,首先应该识别这个对象。一个对象就是一个人一样,他会有各种的特征(属性),如比我们可以通过一个人的身份证号,姓名,或者他住在哪个街道、楼层、门牌找到这个人。
那么一个对象也有类似的属性,我们可以通过这个属性找到这对象。
注意:不管用那种方式,必须保证页面上该属性的唯一性
2. webdriver 提供了一系列的对象定位方法,常用的有以下几种:
id
name
class name
link text
partial link text
tag name
xpath
css selector
`
<input id="kw" class="s_ipt" type="text" maxlength="100" name="wd" autocomplete="off"> #coding=utf-8 from selenium import webdriver import time browser = webdriver.Chrome() browser.get("http://www.baidu.com") #########百度输入框的定位方式########## #通过id 方式定位 browser.find_element_by_id("kw").send_keys("selenium") #通过name 方式定位 browser.find_element_by_name("wd").send_keys("selenium") #通过tag name 方式定位 browser.find_element_by_tag_name("input").send_keys("selenium") 不能成功,因为input太多了不唯一。 #通过class name 方式定位 browser.find_element_by_class_name("s_ipt").send_keys("selenium") #通过CSS 方式定位 browser.find_element_by_css_selector("#kw").send_keys("selenium") #通过xphan 方式定位 browser.find_element_by_xpath("//*[@id='kw']").send_keys("selenium") browser.find_element_by_id("su").click() time.sleep(3) browser.quit()
`
二、操作测试对象
-
定位之后需要对这个原素进行操作。鼠标点击呢还是键盘输入,这要取决于我们定位的是按钮还输入框。
一般来说,webdriver 中比较常用的操作对象的方法有下面几个:
-
click 点击对象
-
send_keys 在对象上模拟按键输入
-
clear 清除对象的内容,如果可以的话
browser.find_element_by_xpath("//*[@id='kw']").send_keys("selenium") browser.find_element_by_xpath("//*[@id='su']").click() time.sleep(6) # 清除百度搜索框的内容 browser.find_element_by_xpath("//*[@id='kw']").clear() browser.find_element_by_xpath("//*[@id='kw']").send_keys("JUnit")
-
submit 提交对象的内容,表单
browser.find_element_by_xpath("//*[@id='kw']").send_keys("selenium") # submit == click browser.find_element_by_xpath("//*[@id='su']").submit() time.sleep(6) # 清除百度搜索框的内容 browser.find_element_by_xpath("//*[@id='kw']").clear() browser.find_element_by_xpath("//*[@id='kw']").send_keys("JUnit")
-
- text 用于获取元素的文本信息
text = browser.find_element_by_xpath("//*[@id='bottom_layer']/div/p[7]/span").text print(text)
三、添加等待
-
固定等待:time.sleep(3) 设置几秒钟等待几秒钟
-
智能能带:implicitly——wait(6) 等待的时间为0–6s
browser.find_element_by_xpath("//*[@id='kw']").send_keys("selenium") browser.find_element_by_xpath("//*[@id='su']").submit() # time.sleep(10) # 固定等待 browser.implicitly_wait(10) # 智能等待 browser.find_element_by_link_text("selenium - 百度翻译").click()
四、打印信息
- title
- URL
五、浏览器操作
-
最大化浏览器:
browser.maximize_window()
-
最小化浏览器:
browser.minimize_window()
-
设置浏览器宽高:
browser.set_window_size(400, 800)
-
设置浏览器滚动条
# 浏览器的滚动条拖动到最低端 js = "var q=document.documentElement.scrollTop=10000" browser.execute_script(js) time.sleep(6) # 浏览器的滚动条拖动到最顶端 js1 = "var q=document.documentElement.scrollTop=0" browser.execute_script(js1) time.sleep(3)
六、键盘事件
键盘按键用法
from selenium import webdriver
import time
from selenium.webdriver.common.keys import Keys
browser = webdriver.Chrome()
browser.get("http://127.0.0.1:88/biz/user-login-L2Jpei8=.html")
# 窗口最大化
browser.maximize_window()
# 输入用户名
browser.find_element_by_name("account").send_keys("admin")
# 用Tab键把光标移动到密码输入框
browser.find_element_by_name("account").send_keys(Keys.TAB)
time.sleep(8)
browser.find_element_by_name("password").send_keys("shijinze123456")
# ENTER键
browser.find_element_by_name("password").send_keys(Keys.ENTER)
time.sleep(8)
browser.quit()
键盘组合键
from selenium import webdriver
import time
from selenium.webdriver.common.keys import Keys
browser = webdriver.Firefox()
browser.get("http://www.baidu.com")
browser.maximize_window()
browser.find_element_by_id("kw").send_keys("中秋节")
browser.find_element_by_id("su").click()
browser.implicitly_wait(10)
# 键盘组合键
# ctrl+a 全选输入框内容
browser.find_element_by_id("kw").send_keys(Keys.CONTROL, 'a')
time.sleep(4)
# ctrl+x 剪切输入框内容
browser.find_element_by_id("kw").send_keys(Keys.CONTROL, 'x')
# 输入框重新输入内容
time.sleep(4)
browser.find_element_by_id("kw").send_keys("端午节")
browser.find_element_by_id("su").click()
time.sleep(4)
browser.quit()
七、鼠标事件
ActionChains 类
-
context_click() 右击
-
double_click() 双击
-
drag_and_drop() 拖动
-
move_to_element() 移动
from selenium import webdriver import time from selenium.webdriver import ActionChains browser = webdriver.Firefox() browser.get("http://www.baidu.com") browser.maximize_window() browser.find_element_by_id("kw").send_keys("迪丽热巴") # 定位‘百度一下’ su1 = browser.find_element_by_id("su") # 右击 ActionChains(browser).context_click(su1).perform() # 双击 ActionChains(browser).double_click(su1).perform() browser.find_element_by_id("su").click() title = browser.find_element_by_id("su") target = browser.find_element_by_link_text("迪丽热巴 - 百度百科") # 拖动 ActionChains(browser).drag_and_drop(title, target).perform() # 移动 ActionChains(browser).move_to_element(target).perform() time.sleep(3) browser.quit()