官文参考文档链接
环境 python2.7
Selenium 2.42.1
pip install selenium==2.42.1
Chrome 浏览器驱动,需下载,并且将驱动添加到PATH环境变量中
自动化测试脚本小案例
from selenium import webdriver
driver = webdriver.Chrome()
driver.get("http://www.baidu.com") #通过get()方法,可以向浏览器发送网址(URL)
driver.find_element_by_id("kw").send_keys("Selenium") # 通过id="kw"定位到百度的输入框,并通过键盘输入方法 send_keys()向百度输入框输入 "selenium"搜索关键字
driver.find_element_by_id("su").click() # 通过 id="su"定位百度一下搜索按钮,并向搜索按钮发送单击事件 click()
driver.quit() # 退出并关闭窗口的每一个相关的驱动程序
find_element_by_id()
通过标签的id
属性来定位
driver.find_element_by_id("kw")
find_element_by_name()
通过标签的name
属性来定位
driver.find_element_by_name("wd")
find_element_by_class_name()
通过标签的class
属性来定位
driver.find_element_by_class_name("s_ipt")
find_element_by_tag_name()
通过标签名来定位
driver.find_element_by_tag_name("input")
find_element_by_link_text()
定位文本链接,即href
中的 url
地址
百度中的HTML
中文字符串前 加u
表示将其转换为Unicode,因为默认情况下中文可能出现乱码
<a href="http://news.baidu.com" target="_blank" class="mnav">新闻a>
<a href="https://www.hao123.com" target="_blank" class="mnav">hao123a>
<a href="http://map.baidu.com" target="_blank" class="mnav">地图a>
<a href="http://v.baidu.com" target="_blank" class="mnav">视频a>
<a href="http://tieba.baidu.com" target="_blank" class="mnav">贴吧a>
<a href="http://xueshu.baidu.com" target="_blank" class="mnav">学术a>
driver.find_element_by_link_text(u"新闻").click()
find_element_by_partial_link_text()
partial link 是对 link 一种补充,使用于文本链接很长的时候
<a href="#" target="_blank" class="mnav">这是一个很长很长的文本链接说明a>
driver.find_element_by_partial_link_text(u"这是一个很长")
driver.find_element_by_partial_link_text(u"链接说明")
find_element_by_xpath()
xpath 是一种XML文档中定位元素的语言
主要用标签名的层级关系来定位元素的绝对路径,如果一个层级下有多个相同的标签名,那么就按上下文顺序确定是第几个,div[2]
表示第二个div标签
find_element_by_xpath("/html/body/div/div[2]/div/div/div/from/span[2]/input")
//
表示当前页面某个目录下
find_element_by_xpath("//input[@id='kw']")
find_element_by_xpath("//input[@clsss='s_ipt']")
find_element_by_xpath("//*[@class='kw']") # * 不指定标签名
#某些标签其父类能位置指定的使用例子
find_element_by_xpath("//form[@id='form']/span[2]/input")
使用逻辑运算符连接多个属性来区别其他属性
<input id="kw" class="su" name="ie">
<input id="kw" class="aa" name="ie">
<input id="bb" class="su" name="ie">
find_element_by_xpath("//input[@id='kw' and @class='su']/span/input") #定位上述第一个标签下的子类input标签
find_element_by_css_selector()
通过CSS来定位
driver.set_window_size(400,800) # 宽,高, 浏览器宽400,高800
driver.back()
driver.forward()
clear()
清除文本,如果是一个文件输入框
send_keys("String")
在元素上模拟按键输入
click()
单击元素
submit()
用于提交表单,有时相当于回车
size
返回元素的尺寸
text
获取元素的文本
get_attribute('string')
获得属性值,比如 id,class,name …
is_displayed
设置该元素是否用户可见
from selenium import webdriver
from selenium.webdriver.common.by import By
driver = webdriver.Chrome()
driver.get("http://www.youdao.com")
driver.find_element_by_id("translateContent").send_keys("translation")
print driver.find_element_by_id("translateContent").size
print driver.find_element_by_id("translateContent").get_attribute('name')
print driver.find_element_by_id("translateContent").get_attribute('type')
driver.find_element_by_id("translateContent").submit()
print driver.find_element_by_xpath("//*[@id='phrsListTab']/div/ul/li").text
print driver.find_element_by_xpath("//*[@id='phrsListTab']/div/ul/li").is_displayed()
{'width': 383, 'height': 14}
q
text
n. 翻译;译文;转化;调任
True
ActionChains类
提供perform()
执行所有ActionChains中存储的行为
context_click()
右击
double_click()
双击
drag_and_drop()
拖动
move_to_element()
鼠标悬停
from selenium import webdriver
from selenium.webdriver.common.action_chains import ActionChains
driver = webdriver.Chrome()
driver.get("http:www.baidu.com")
#定位到要悬停的元素
above = driver.find_element_by_xpath("//*[@id='u1']/a[8]")
ActionChains(driver).move_to_element(above).perform() #悬停
ActionChains(driver).context_click(above).perform() #右击
ActionChains(driver).double_click(above).perform() #双击
#鼠标拖动的源元素
element = driver.find_element_by_id("xxxx")
#鼠标释放的目标元素
target = driver.find_element_by_id("xxxxx"
ActionChains(driver).drag_and_drop(element,target).perform()
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)
send_keys(Keys.CONTROL,'x')
剪切(Ctrl+X)
send_keys(Keys.CONTROL,'v')
粘贴(Ctrl+V)
send_keys(Keys.F1)
键盘F1
...
send_keys(Keys.F12)
键盘F12
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
driver = webdriver.Chrome()
driver.get("http:www.baidu.com")
driver.find_element_by_id("kw").send_keys("seleniumm") #输入内容
driver.find_element_by_id("kw").send_keys(Keys.BACK_SPACE) # 删除键
driver.find_element_by_id("kw").send_keys(Keys.CONTROL,'a') #全选
driver.find_element_by_id("kw").send_keys(Keys.CONTROL,'x') #剪切
driver.find_element_by_id("kw").send_keys(Keys.CONTROL,'v') #粘贴
driver.find_element_by_id("kw").send_keys(Keys.SPACE) #空格
driver.find_element_by_id("kw").send_keys(u"教程")
driver.find_element_by_id("kw").send_keys(Keys.ENTER)
title
用于获取当前页面的标题
current_url
用于获取当前页面的URL
from selenium import webdriver
driver = webdriver.Chrome()
driver.get("http:www.baidu.com")
print driver.title
print driver.current_url