from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.action_chains import ActionChains # 导入包
import time
driver = webdriver.Chrome(executable_path='../../drivers/chrome89/chromedriver')
# driver.maximize_window()
# 1.模拟鼠标滑动操作
# 打开百度,鼠标滑动到更多上面,打开音乐页面
driver.get('https://www.baidu.com/')
more_btn = driver.find_element_by_xpath('//*[@name="tj_briicon"]') # 找到‘更多’元素
action = ActionChains(driver) # 构建动作
action.move_to_element(more_btn) # 移动到‘更多’元素上
mp3 = driver.find_element_by_xpath('//*[@name="tj_mp3"]') # 找到‘音乐’元素
action.move_to_element(mp3).click() # 移动到‘音乐’元素上,并点击
action.perform() # 执行,构建完成之后一定要调用此方法
# 2.模拟快捷键操作
# 打开百度,输入helloword,然后快捷键全选,剪切,复制复制复制
driver.get('https://www.baidu.com/')
input_hello = driver.find_element_by_xpath('//input[@name="wd"]') # 找到‘输入框’元素
input_hello.send_keys('helloword') # 输入内容
actions_2 = ActionChains(driver)
actions_2.click(input_hello)
actions_2.key_down(Keys.CONTROL).send_keys('a').key_up(Keys.CONTROL) # Ctrl+a
actions_2.key_down(Keys.CONTROL).send_keys('c').key_up(Keys.CONTROL) # Ctrl+c
actions_2.key_down(Keys.CONTROL).send_keys('v').key_up(Keys.CONTROL) # Ctrl+v
actions_2.key_down(Keys.CONTROL).send_keys('v').key_up(Keys.CONTROL) # Ctrl+v
actions_2.key_down(Keys.CONTROL).send_keys('v').key_up(Keys.CONTROL) # Ctrl+v
actions_2.perform() # 执行
# 3.模拟拖拽操作
# 打开百度地图,随机找一个点设置为起点,然后拖拽,随机的找一个点作为终点
driver.get('https://map.baidu.com/')
bd_map = driver.find_element_by_id('mask') # 找到地图元素
actions_3 = ActionChains(driver)
actions_3.move_to_element(bd_map).context_click() # 在地图中心的,模拟鼠标点击右键
actions_3.pause(3) # 暂停3s (运行的太快了,会看不到效果)
start = driver.find_element_by_id('cmitem_start') # 找到‘以此为起点’元素
actions_3.move_to_element(start).click() # 鼠标滑动到start 元素上,点击
actions_3.pause(3)
# 模拟鼠标右键点击地图,然后拖拽
actions_3.click_and_hold(bd_map).move_by_offset(xoffset=50, yoffset=10).release()
actions_3.pause(3)
actions_3.context_click() # 模拟鼠标,点击右键
actions_3.pause(3)
end = driver.find_element_by_id('cmitem_end')
actions_3.move_to_element(end).click()
actions_3.pause(3)
actions_3.perform() # 执行