导入相关的函数: from selenium import webdriver
启动浏览器: driver= webdriver.Firefox() 当然也可以换成 IE 或 Chrome
定位元素: driver.find_element_by_id("kw").send_keys("selenium")
driver.find_element_by_id("su").click()
退出并关闭窗口的每一个相关的驱动程序:driver.quit()
关闭当前窗口: driver.close()
元素的定位
· id
· name
· class name
· link text
· partial link text
· tag name
· xpath
· css selector
<input id="kw" name="wd" class="s_ipt" value="" maxlength="255" autocomplete="off">
添加等待时间
有时候为了保证脚本运行的稳定性,需要脚本中添加等待时间。
需要引入 time 包
Import time
time.sleep(0.3) #休眠 0.3 秒
通过添加 implicitly_wait() 方法就可以方便的实现智能等待
driver.implicitly_wait(30)
selenium.webdriver.remote.webdriver.implicitly_wait(time_to_wait)
隐式地等待一个无素被发现或一个命令完成;
这个方法每次会话只需要调用一次 time_to_wait: 等待时间
打印信息
print (driver.title) # 把页面 title 打印出来
打印 URL print ("now access %s" %(url))
浏览器最大化
driver.maximize_window() #将浏览器最大化显示
设置浏览器宽、高
driver.set_window_size(480, 800)
操作浏览器的前进、后退
browser.back()
browser.forward()
为了使过程让你看得更清晰,在每一步操作上都可以加了 print 和 sleep
操作测试对象
一般来说,webdriver 中比较常用的操作对象的方法有下面几个
click 点击对象
send_keys 在对象上模拟按键输入
clear 清除对象的内容,如果可以的话
submit 提交表单
text 用于获取元素的文本信息
get_attribute 获得属性值
键盘事件
键盘按键用法
键盘组合键用法
send_keys() 输入中文乱码问题
from selenium import webdriver
from selenium.webdriver.common.keys import Keys #需要引入 keys 包
import os,time
// tab 的定位相相于清除了密码框的默认提示信息,等同上面的 clear()
driver.find_element_by_id("user_name").send_keys(Keys.TAB)
time.sleep(3)
driver.find_element_by_id("user_pwd").send_keys("123456")
// 通过定位密码框,enter(回车)来代替登陆按钮
driver.find_element_by_id("user_pwd").send_keys(Keys.ENTER)
// 也可定位登陆按钮,通过 enter(回车)代替 click()
driver.find_element_by_id("login").send_keys(Keys.ENTER)
// 输入框输入内容
driver.find_element_by_id("kw").send_keys("selenium")
time.sleep(3) #ctrl+a 全选输入框内容
driver.find_element_by_id("kw").send_keys(Keys.CONTROL,'a')
time.sleep(3) #ctrl+x 剪切输入框内容
driver.find_element_by_id("kw").send_keys(Keys.CONTROL,'x')
time.sleep(3) #输入框重新输入内容,搜索
driver.find_element_by_id("kw").send_keys(u"安妮 anan")
driver.find_element_by_id("su").click()
鼠标事件
ActionChains 类
context_click() 右击
double_click() 双击
drag_and_drop() 拖动
from selenium.webdriver.common.action_chains import ActionChains
定位一组元素
定位选取这组元素的共同属性, 通过一个循环来控制每一个控件
多层框架/窗口定位
switch_to_frame()
switch_to_window()
先找到到 ifrome1(id = f1)
browser.switch_to_frame("f1")
再找到其下面的 ifrome2(id =f2)
browser.switch_to_frame("f2")
WebDriverWait(driver, 10)
10 秒内每隔 500 毫秒扫描 1 次页面变化,当出现指定的元素后结束。
is_displayed() 该元素是否用户可以见
class ActionChains(driver)
driver: 执行用户操作实例 webdriver 生成用户的行为。
所有的行动都存储在 actionchains 对象。通过 perform()存储的行为。
move_to_element(menu)
移动鼠标到一个元素中,menu 上面已经定义了他所指向的哪一个元素
to_element:元件移动到
perform() 执行所有存储的行为
上传文件操作
脚本要与 upload_file.html 同一目录
file_path = 'file:///' + os.path.abspath('upload_file.html') driver.get(file_path)
定位上传按钮,添加本地文件
driver.find_element_by_name("file").send_keys('D:\selenium_use_c ase\upload_file.txt')
time.sleep(2)
alert、confirm、prompt 的处理
text 返回 alert/confirm/prompt 中的文字信息
accept 点击确认按钮
dismiss 点击取消按钮,如果有的话
send_keys 输入值,这个 alert\confirm 没有对话框就不能用了,不然会报错
cookie 处理
driver.get_cookies() 获得 cookie 信息
add_cookie(cookie_dict) 向 cookie 添加会话信息
delete_cookie(name) 删除特定(部分)的 cookie
delete_all_cookies() 删除所有 cookie