Mac的Selenium+python自动化-操作元素(键盘和鼠标事件)
command+t #打开新标签页
command+n #在新窗口打开
有些web界面的选项菜单需要鼠标悬停在某个元素上才能显示出来(如百度页面的设置按钮)。
一、简单操作
1.点击(鼠标左键)页面按钮:click()
2.请空输入框:clear()
3.输入字符串:send_keys()
4.打开测试部落论坛后,点击放大镜搜索图标,一般为了保证输入的正确性,可以先清空下输入框,然后输入搜索关键字
二、submit提交表单
1.在前面百度搜索案例中,输入关键字后,可以直接按回车键搜索,也可以点搜索按钮搜索。
2.submit()一般用于模拟回车键
3.但是论坛的搜索,如果用submit的话,会报错,可是又没有搜索点击按钮,怎么办呢?
三、键盘操作
1.selenium提供了一整套的模拟键盘操作事件,前面submit()方法如果不行的话,可以试试模拟键盘事件
2.模拟键盘的操作需要先导入键盘模块:from selenium.webdriver.common.keys import Keys
3.模拟enter键,可以用send_keys(Keys.ENTER)
4.其它常见的键盘操作:
-
- 键盘F1到F12:send_keys(Keys.F1) 把F1改成对应的快捷键
- 复制Ctrl+C:send_keys(Keys.CONTROL,'c')
- 粘贴Ctrl+V:send_keys(Keys.CONTROL,'v')
- 全选Ctrl+A:send_keys(Keys.CONTROL,'a')
- 剪切Ctrl+X:send_keys(Keys.CONTROL,'x')
- 制表键Tab: send_keys(Keys.TAB)
这里只是列了一些常用的,当然除了键盘事件,也有鼠标事件
四、鼠标悬停事件
1.鼠标不仅仅可以点击(click),鼠标还有其它的操作,如:鼠标悬停在某个元素上,鼠标右击,鼠标按住某个按钮拖到
2.鼠标事件需要先导入模块:from selenium.webdriver.common.action_chains import ActionChains
perform() 执行所有ActionChains中的行为
move_to_element() 鼠标悬停
3.这里说明几个为例
1.鼠标右击
- context_click():右击
# 鼠标右击 # 定位到要右击的元素 right_click = browser.find_element_by_id("xx") # 对定位到的元素执行右击操作 ActionChains(browser).move_to_element(right_click ).perform()
2.鼠标双击
- double_click():双击
# 定位到要右击的元素 double_click = browser.find_element_by_id('xx') # 对定位到的元素执行鼠标右键操作 ActionChains(browser).context_click(double_click).perform()
3.鼠标拖动
- drag_and_drop(source,target):拖动
- source:开始位置;需要拖动的元素
- target:结束位置;拖到后需要放置的目的地元素
# 开始位置:定位到元素的原位置 source = driver.find_element_by_id("xx") # 结束位置:定位到元素要移动到的目标位置 target = driver.find_element_by_id("xx") # 执行元素的拖放操作 ActionChains(driver).drag_and_drop(source,target).perform()
4.鼠标悬停
- move_to_element():鼠标悬停
# 定位到要悬停的元素 move = driver.find_element_by_id("xx") # 对定位到的元素执行悬停操作 ActionChains(driver).move_to_element(move).perform()

鼠标进行补充
- perform():执行所有 ActionChains 中存储的行为。
- context_click():右击
- double_click():双击
- drag_and_drop():拖到
- move_to_element():鼠标悬停
鼠标右击实例
from selenium import webdriver from selenium.webdriver.common.action_chains import ActionChains # 引入 ActionChains 类 browser = webdriver.Chrome() browser.get('https://www.baidu.com') # 定位到要右击的元素 right_click = browser.find_element_by_link_text('新闻') # 对定位到的元素执行鼠标右键操作 #ActionChains(driver):调用ActionChains()类,并将浏览器驱动browser作为参数传入 #context_click(right_click):模拟鼠标双击,需要传入指定元素定位作为参数 #perform():执行ActionChains()中储存的所有操作,可以看做是执行之前一系列的操作 try: ActionChains(browser).context_click(right_click).perform() print('成功右击') except Exception as e: print('fail') #输出内容:成功双击
浙公网安备 33010602011771号