Python使用selenium(二)
1.selenium鼠标事件
from selenium import webdriver
b=webdriver.Firefox()
url='http://www.baidu.com'
b.get(url)
ele=b.find_element_by_id('test')
from selenium.webdriver.common.action_chains import ActionChains
ActionChains(b) 用于生成模拟用户行为
perform() 执行存储行为
将鼠标放到元素上
ActionChains(b).move_to_element(ele).perform()
2.键盘事件
from selenium.webdriver.common.keys import Keys
模拟键盘正常输入字符
ele.send_keys("asdfj") 使用简单的模拟元素的输入不需要导入上面的包。当输入图片中复杂的组合
需要导包。
有时候ele.send_keys()第一次发送字符会失败,不知道什么原因。一般先发送一个空
ele.send_keys( ‘ ’ )
send_keys()是元素属性的方法
Key.ENTER 等是Keys包中的属性
3.对话框处理及登录测试
a.对话框窗口处理:(是那种网页中有个聊天的窗口那种)
通过查找元素找到对话框的关闭元素
然后元素点击关闭 就关闭了
b.登录窗口
查找登录窗口的元素
输入账户和密码
查找登录元素,点击登录
4.多窗口切换
先访问百度,然后搜索到另外的页面进入
但是此时打开的是两个窗口,百度窗口和搜索的窗口
此时可以查看窗口所有的句柄 d.window_handles 返回的是列表
d.current_window_handle 查看所有句柄
当有多个窗口在多个窗口中切换
d.switch_to_window(d.window_handles[1]) 切换到特定的窗口
d.current_url 查看窗口当前的URL
d.close() 切换到特定窗口后 可以进行窗口关闭
d.quit() 退出,所有窗口都关闭了
5.脚本中加入等待的方法
a.Python本身time模块的sleep方法
b.selenium 模块中的等待方法
implicitly_wait() 针对所有的控件查找 找不到超时
WebDriverWait 针对某一个操作
d.implicitly_wait(5) 单位是秒 该语句后面的查找元素都满足此规则
当查找的元素不存在时,查询时间超过5秒才会报错 找到时会立马返回
from selenium.webdriver.support.ui import WebDriverWait
def get_ele_times(driver,times,func)
return WebDriverWait(driver,times).until(func) 这个方法的返回值就是func的返回值
此时将之前查找元素的语句ele=b.find_element_by_id('id1')更改为
ele=get_ele_times(b,10, lambda b: b.find_element_by_id('id1')) 超时的时间是10秒 只针对该查询
6.alert对话框处理
alert弹出框鼠标右击无法检查元素,此时通过其他方法来操作
alter = b.switch_to_alert()
alter.accept()
alter.text 查看弹出框的文本
alter.dismiss()
selenium发送post请求: