文章目录
一、ActionChains
ActionChains模拟鼠标操作的常用方法。使用click()方法可以进行鼠标的单击操作,但是鼠标操作还包括:双击、右击、悬停、鼠标拖动等功能,所以,ActionChains类提供了鼠标的常用方法
1、导入
from selenium.webdriver.common.action_chains import ActionChains
2、perform()方法
当你调用ActionChains中的其他方法时(如:chick(),send_keys()等),是不会立即执行的,而是会将所有的操作按顺序存放在一个队列里,只有当你调用perform()方法时,队列中的时间会依次执行。
所以,在任意的操作链结束之后都要调用 perform()方法
3、用法
action=ActionChains(driver)
action.多个操作
action.perform()
二、键盘事件
1、按下shift键
1、访问百度网站
2、点击搜索按钮
3、输入搜索的内容,输入的同时按着shift键
key_down():表示按下某个按键
perform():表示执行操作
1、定位输入框:
ele = self.driver.find_element(By.ID, ‘kw’)
2、初始化ActionChains对象
action=ActionChains(self.driver)
3、按下shift键并且传入元素,输入参数
action.key_down(Keys.SHIFT,ele).
send_keys(‘selenium’).
perform()
import time
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.action_chains import ActionChains
from selenium.webdriver.common.keys import Keys
class TestKeyboard:
def setup_class(self):
self.driver=webdriver.Chrome()
self.driver.implicitly_wait(3)
def teardown(self):
self.driver.quit()
def test_swift(self):
"""
1、访问百度网站
2、点击搜索按钮
3、输入搜索的内容,输入的同时按着shift键
:return:
"""
self.driver.get('https://www.baidu.com/')
self.driver.find_element(By.CSS_SELECTOR,".bg.s_btn").click()
# 目标元素即为输入框
ele = self.driver.find_element(By.ID, 'kw')
action=ActionChains(self.driver)
#key_down()表示按下某个按键
#输入内容
#perform()执行操作
action.key_down(Keys.SHIFT,ele).\
send_keys('selenium').\
perform()
time.sleep(3)
2、输入回车
第一种回车方式:
self.driver.find_element(By.ID, ‘kw’).send_keys(Keys.ENTER)
第二种回车方式:
ActionChains(self.driver).key_down(Keys.ENTER).perform()
import time
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.action_chains import ActionChains
from selenium.webdriver.common.keys import Keys
class TestKeyboard:
def setup_class(self):
self.driver=webdriver.Chrome()
self.driver.implicitly_wait(3)
def teardown(self):
self.driver.quit()
def test_enter(self):
self.driver.get('https://www.baidu.com/')
self.driver.find_element(By.ID, 'kw').send_keys('python')
#第一种回车方式
#self.driver.find_element(By.ID, 'kw').send_keys(Keys.ENTER)
#第二种回车方式
ActionChains(self.driver).key_down(Keys.ENTER).perform()*
time.sleep(3)
3、复制粘贴
import sys
import time
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.action_chains import ActionChains
from selenium.webdriver.common.keys import Keys
class TestKeyboard:
def setup_class(self):
self.driver=webdriver.Chrome()
self.driver.implicitly_wait(3)
def teardown(self):
self.driver.quit()
def test_copy_and_paste(self):
self.driver.get('https://www.baidu.com/')
self.driver.find_element(By.CSS_SELECTOR, ".bg.s_btn").click()
# 目标元素即为输入框
ele = self.driver.find_element(By.ID, 'kw')
#判断操作系统是否为mac,如果是则返回command键位,如果是windows返回control键位
command_contral=Keys.COMMAND if sys.platform == 'darwin' else Keys.CONTROL
action = ActionChains(self.driver)
# key_down()表示按下某个按键
# 输入内容
# perform()执行操作
action.key_down(Keys.SHIFT, ele). \
send_keys('selenium!').\
key_down(Keys.ARROW_LEFT).\
key_down(command_contral).\
send_keys("xvv").\
key_up(command_contral).\
perform()
time.sleep(3)
三、鼠标事件
1、双击double_click()
ActionChains(self.driver).double_click(ele).perform()
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time : 2023/2/22 23:43
# @Author : 杜兰特
# @File : test_mouse.py
import sys
import time
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.action_chains import ActionChains
from selenium.webdriver.common.keys import Keys
class TestMouse:
def setup_class(self):
self.driver=webdriver.Chrome()
self.driver.implicitly_wait(3)
def teardown(self):
self.driver.quit()
def test_double_click(self):
self.driver.get('https://vip.ceshiren.com/#/ui_study/frame')
#self.driver.find_element(By.ID,'primary_btn').click()
ele=self.driver.find_element(By.ID,'primary_btn')
ActionChains(self.driver).double_click(ele).perform()
time.sleep(3)
2、拖拽
ActionChains(self.driver).drag_and_drop(ele1,ele2).perform()
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time : 2023/2/22 23:43
# @Author : 杜兰特
# @File : test_mouse.py
import sys
import time
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.action_chains import ActionChains
from selenium.webdriver.common.keys import Keys
class TestMouse:
def setup_class(self):
self.driver=webdriver.Chrome()
self.driver.implicitly_wait(3)
def teardown(self):
self.driver.quit()
def test_drag_and_drop(self):
self.driver.get('https://vip.ceshiren.com/#/ui_study/action_chains')
#获取起始元素的位置
ele1=self.driver.find_element(By.ID,'item1')
#获取目标元素的位置
ele2=self.driver.find_element(By.ID,'item3')
ActionChains(self.driver).drag_and_drop(ele1,ele2).perform()
time.sleep(3)
3、悬浮
ActionChains(self.driver).move_to_element(ele).perform()
问题:当鼠标挪开后,下拉字段页面不展示,不方便调试;
解决:按住ctrl+shift+c调试
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time : 2023/2/22 23:43
# @Author : 杜兰特
# @File : test_mouse.py
import sys
import time
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.action_chains import ActionChains
from selenium.webdriver.common.keys import Keys
class TestMouse:
def setup_class(self):
self.driver=webdriver.Chrome()
self.driver.implicitly_wait(3)
def teardown(self):
self.driver.quit()
def test_move_to_element(self):
self.driver.get('https://vip.ceshiren.com/#/ui_study/action_chains2')
ele=self.driver.find_element(By.CSS_SELECTOR,'.title')
ActionChains(self.driver).move_to_element(ele).perform()
time.sleep(2)
self.driver.find_element(By.XPATH,'//div[contains(text(),"测开班")]').click()
time.sleep(3)
4、滚轮滚动操作
根据位置定位:
ActionChains(self.driver).scroll_to_element(ele).perform()
根据坐标定位:
ActionChains(self.driver).scroll_by_amount(0,3000).perform()
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time : 2023/2/22 23:43
# @Author : 杜兰特
# @File : test_mouse.py
import sys
import time
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.action_chains import ActionChains
from selenium.webdriver.common.keys import Keys
class TestMouse:
def setup_class(self):
self.driver=webdriver.Chrome()
self.driver.implicitly_wait(3)
def teardown(self):
self.driver.quit()
#根据位置定位
def test_scroll_to_element(self):
self.driver.get('https://blog.csdn.net/YZL40514131?type=blog')
ele=self.driver.find_element(By.XPATH,'//h4[contains(text(),"自定义Mixin方法")]')
ActionChains(self.driver).scroll_to_element(ele).perform()
time.sleep(10)
#根据坐标定位
def test_scroll_to_xy(self):
self.driver.get('https://blog.csdn.net/YZL40514131?type=blog')
ActionChains(self.driver).scroll_by_amount(0,3000).perform()
time.sleep(10)
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/123130.html