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请求:

 

posted on 2018-12-04 15:49  yanmay  阅读(1071)  评论(0编辑  收藏  举报

导航