1.打开页面
#第一步导入webdriver模块
from selenium import webdriver
#第二步打开浏览器
driver = webdriver.Firefox() E:Python2.7Libsite-packagesseleniumwebdriverfirefoxwebdriver.py
#第三步打开想要进入的页面
driver.get('http://oms01sz.itc.cmbchina.cn/login.html')
2.设置休眠时间
import time
time.sleep(2)
3.页面刷新
driver.refresh() #相当于F5 E:Python2.7Libsite-packagesseleniumwebdriver
emotewebdriver.py
4.页面切换
切到上一页面
driver.back()
切到下一页面
driver.forward() #相当于浏览器左上角的右箭头按钮
5.设置窗口大小
driver.set_window_size(500,600)
driver.maximize_window() 最大化浏览器窗口
6.截屏
driver.get_screenshot_as_file("D:\test\b1.jpg")
7.退出
driver.quit() #用于结束进程,关闭所有窗口,可以回收C盘中的临时文件
driver.close() #关闭当前窗口,当窗口较多时,可用来关闭部分窗口
操作元素(键盘和鼠标事件) E:Python2.7Libsite-packagesseleniumwebdriver
emotewebelement.py
1.点击(鼠标左键)页面按钮:click()
2.清空输入框:clear()
3.输入字符串:send_keys(u"哈哈")
4.submit提交
模拟键盘操作要先导入键盘模块
from selenium.webdriver.common.keys import Keys
模拟enter键:send_keys(Keys.ENTER)
键盘F1到F12:send_keys(Keys.F1) #其他同理
复制:send_keys(Keys.CONTROL,'c') 粘贴,全选,剪切同理
制表键Tab:send_keys(Keys.TAB)
鼠标事件
from selenium.webdriver.common.action_chains import ActionChains
ActionChains(driver).move_to_element(元素位置).perform() 鼠标悬停
右击鼠标:context_click()
双击鼠标:double_click()
多窗口,句柄
浏览器窗口的属性用句柄(handle)来标识
获取当前句柄
driver.current_window_handle
获取所有句柄
driver.window_handles 得到一个列表
切换句柄
方法1:获取句柄list中的第二个句柄直接切换
all_handles = driver.window_handles
driver.switch_to.window(all_handles[1])
frame 与iframe 的区别
frame是整个页面的框架,iframe是内嵌的网页元素
切换iframe
driver.switch_to_frame("id值")
释放iframe
driver.switch_to.default_content() #释放iframe,重新回到主页面
select下拉框
方法一:分两步,先定位到select框,再定位到选项
driver.find_element_by_id("框的id值").find_element_by_xpath("//*[@value="1"]").click()
方法二:直接定位
driver.find_element_by_xpath("//*[@id='nr']/option[2]]").click()
方法三:使用Select模块
from selenium.webdriver.support.select import Select
Select(框的id值).select_by_index(2) 根据索引
Select(框的id值).select_by_value("15") 根据value值
Select(框的id值).select_by_visible_text("学习") 根据text文本
alertconfirmprompt
alert弹出框只有确定按钮
confirm弹出框有确定按钮和取消按钮
prompt弹出框有确定按钮,取消按钮和输入框
t = driver.switch_to_alert()
t.text 获取弹框内容
t.accept() 点击确定按钮
t.dismiss() 点击取消按钮
t.send_keys('anyway you want') 输入文本值
单选框和复选框(radiobox、checkbox)
单选框是圆的;复选框是方的
先判断按钮是否被点击,
driver.find_element_by_id('id').is_selected() 若被点击 返回True,没被点击返回False
driver.find_element_by_id('id0').click() 单选框
checkboxs = driver.find_elements_by_xpath('//*[@type="checkbox"]') 复选框得到是一组元素列表
for i in checkboxs:
i.click()
table表格定位
1.table页面查看源码一般有这几个明显的标签:table、tr、th、td
2.<table>标示一个表格
3.<tr>标示这个表格中间的一个行
4.<th> 定义表头单元格
5.<td> 定义单元格标签,一组<td>标签将将建立一个单元格,<td>标签必须放在<tr>标签内
文件上传
input标签,并且type属性的值为file,直接用send_keys()方法上传文件
river.find_element_by_name('file').send_keys(r"D: estxuexi est14.png")
非input标签 需要借助autoit工具或者SendKeys第三方库
滑动滚动条 借助js 控制滚动条高度 方法一: driver.execute_script("document.documentElement.scrollTop=0") #滚动条回到顶部 driver.execute_script("document.documentElement.scrollTop=10000") #滚动条回到底部 可以修改scrollTop 的值,来定位右侧滚动条的位置,0是最上面,10000是最底部
方法二:不推荐使用 谷歌和火狐都没有生效 driver.execute_script("document.body.scrollTop=0") driver.execute_script("document.body.scrollTop=10000")
方法三: driver.execute_script("window.scrollTo(0,0)") #滚动条回到顶部 driver.execute_script("window.scrollTo(0,document.body.scrollHeight)") #滚动条回到底部
横向滚动条
1.有时候浏览器页面需要左右滚动(一般屏幕最大化后,左右滚动的情况已经很少见了)。
2.通过左边控制横向和纵向滚动条
js = "window.scrollTo(100,400);"
driver.execute_script(js)
3.第一个参数x是横向距离,第二个参数y是纵向距离
js处理内嵌div滚动条
先定位元素然后通过控制 scrollTop的值来控制滚动条高度
driver.execute_script('document.getElementById('id').scrollTop=0')
横向滚动
先通过id来定位,通过控制scrollLeft的值来控制滚动条高度
driver.execute_script('document.getElementById('id').scrollLeft=0')
滚动条拖地元素可见的位置
先让页面直接跳到元素出现的位置,然后就可以操作了。同样需要借助JS去实现。
元素聚焦
target = driver.find_element_by_xxxx()
driver.execute_script("arguments[0].scrollIntoView();", target)