1、浏览器的操做css
from selenium import Webdriver //从selenium库导入Webdriver包web
browser = Webdriver.Chrome(***\chromedriver.exe) //打开谷歌浏览驱动chrome
browser.get("http://www.baidu.com") //向浏览器发送网址浏览器
browser.maximize_window() //浏览器最大化框架
from time import sleep //从time模块中导入sleep函数函数
sleep(2) //睡眠2秒动画
browser.quit() //关闭浏览器对象ui
browser.set_window_size(480, 800) //设置浏览器宽480,高800spa
browser.back() //浏览器后退orm
browser.forward() //浏览器前进
2、简单的对象定位
网页元素:包括文本框、静态文字、图片、音频、动画、视频,也就是网页中各类控件
元素的八大定位方法
find_element_by_id() //根据元素的id定位,具备惟一性,较为准确
find_element_by_name() //根据元素的name定位,具备惟一性,较为准确
find_element_by_class_name() //根据元素的class_name定位,不许确,存在重复性太多
find_element_by_tag_name() //根据tag_name定位,不许确
find_element_by_link_text() //根据连接的文本定位,较为准确
find_element_by_partial_link_text() //根据部分连接文本定位,文本太长时采用
find_element_by_xpath() //绝对路径定位,优势是定位较为准确,缺点是目录层级太多时,很长,层级容易发生变化,不够健壮
find_element_by_css_selector()
3、经常使用的元素操做
clear() 清除元素的输入内容
例如:browser.find_element_by_id("kw").clear()
send_keys() 在元素上模拟按键输入
例如:browser.find_element_by_id("kw").send_keys(u"百度")
click() 单击元素
例如:browser.find_element_by_id("su").click()
submit() 提交表单,做用同click
例如:browser.find_element_by_id("kw").submit()
WebElement接口经常使用方法
size返回元素尺寸,使用时无括号
例如:r_size=browser.find_element_by_id("kw").size
text()返回元素文本,使用时无括号
例如:r_text=browser.find_element_by_id("cp").text
get_attribute() 获取该元素任意属性的内容
例如:r_attribute=browser.find_element_by_id("kw").get_attribute("class")
4、鼠标事件
一、context_click() //右击
例如:from selenium.webdriver.common.action_chains import ActionChains //导入ActionChains函数
ActionChains(driver).context_click(element_id).perform() //右击事件,ActionChains用于生成用户的行为;全部的行为都存储在 actionchains 对象。
经过 perform()执行存储的行为。context_click(right_element) 右击操做,括号内的参数是元素的位置。
perfrome()一样也是 ActionChains 类提供的的方法,一般与ActionChains()配合使用
double_click() //双击 drag_and_drop() //拖动 move_to_element() //鼠标悬停在一个元素上 click_and_hold() 按下鼠标左键在一个元素上。这四个操做方法都是同样。
二、键盘操做
使用键盘操做,要导入Keys类包
常常用到的键盘操做有:
send_keys(Keys.BACK_SPACE) 删除键
send_keys(Keys.SPACE) 空格键
send_keys(Keys.TAB) 制表键
send_keys(Keys.ESCAPE) 回退键ESC
send_keys(Keys.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)
5、层级定位
层级定位:先定位父元素,而后再经过父元素定位子孙元素
例如:driver.find_element_by_id("u1").find_element_by_link_text(u"新闻").click()
6、定位frame中的元素
在 web 应用中常常会出现 frame 嵌套的应用,假设页面上有 A、B 两个 frame,其中 B 在 A 内,那么定位B中的内容则须要先到A,而后再到B
例如:browser.switch_to.frame(id)
browser.switch_to.frame(name)
7、浏览器多个窗口的处理
current_window_handle //得到当前句柄
window_handles //得到全部的句柄
switch_to_window() //用于处理多个窗口的操做方法,与swith_to_frame()是相似,switch_to_window()用于处理多个窗口切换,swith_to_frame()是处理多框架的切换
句柄:是系统分配给窗口惟一标识,跟身份证同样,用这个句柄(一个长整型long),能够找到这个窗口
driver = webdriver.Chrome(r'F:\tools\chromedriver.exe')
driver.get('http://www.baidu.com')
#获取百度的句柄
first_handle = driver.current_window_handle
print first_handle
driver.find_element_by_link_text(u'登陆').click()
sleep(3)
driver.find_element_by_link_text(u'当即注册').click()
sleep(3)
#获取全部的句柄
all_handles = driver.window_handles
#遍历全部的句柄
for handle in all_handles:
if handle != first_handle:
second_handle = handle
#跳转到注册窗口
driver.switch_to_window(second_handle)
print driver.title
driver.find_element_by_name('userName').send_keys('chencghu')
sleep(3)
driver.close()
八.alert弹框处理alert=browser.switch_to_alert() #切换到弹框界面alert.accept() #接受警告信息print alert.text() #获得文本信息并打印alert.dismiss() #取消对话框(若是有的话)alert.send_keys() #输入值(若是有的话)