首页 > 技术文章 > python中对jsjavascript、ActionChains和Keys的处理(编辑器、鼠标和键盘事件)

ilyl 2022-06-13 14:00 原文

1、编辑器事件

from selenium import webdriver
import time as  t
(1)'''ueditor在线代码编辑器(定位文本框)(旧)'''
driver=webdriver.Chrome()
driver.maximize_window()
driver.get('https://www.bejson.com/ui/ueditor/')
driver.switch_to.frame('ueditor_0')
t.sleep(2)
driver.find_element_by_xpath('/html/body/p').send_keys('hi')
t.sleep(2)
driver.quit()
(2)'''ueditor在线代码编辑器(js的编辑定位文本框)'''
def richText(driver,richID,content):
  '''
  :param driver: 指的是webdriver实例化后的对象
  :param richID: iframe框架的ID
  :param content: 被输入的内容
  :return:
  '''
  js="document.getElementById('{0}').contentWindow.document.body.innerHTML='{1} '".format(richID,content)
  driver.execute_script(js)

driver=webdriver.Chrome()
driver.maximize_window()
driver.get('https://www.bejson.com/ui/ueditor/')
#js方法
richText(driver=driver,richID='ueditor_0',content='lyl')
t.sleep(2)
driver.quit() 

2、鼠标事件:

ActionChains(动作链)是一种自动化交互方法,例如鼠标移动,鼠标按钮操作,按键操作和上下文菜单交互生成用户操作。

在ActionChains对象上调用操作方法时,操作存储在ActionChains对象的队列中,当您调用perform()时,事件将按它们的顺序触发排队等候

from selenium import webdriver
from selenium.webdriver.common.action_chains import ActionChains
from selenium.webdriver.common.by import By
import time as t
(1)'''鼠标事件(针对下拉框、下拉菜单)'''
driver=webdriver.Chrome()
driver.maximize_window()
driver.get('https://www.baidu.com/')
#点击设置
#driver.find_element_by_xpath('//*[@id="s-usersetting-top"]').click()
settings=driver.find_element(By.XPATH,'//*[@id="s-usersetting-top"]')
#调用 ActionChains() 类,将浏览器驱动 driver 作为参数传入
actionChains=ActionChains(driver=driver)
#move_to_element()将鼠标移动到某个元素
actionChains.move_to_element(settings).perform()
t.sleep(5)
#点击搜索设置
driver.find_element(By.LINK_TEXT,'搜索设置').click()
t.sleep(3)
#是否默认选择每页显示10条数据(断言)
page=driver.find_element(By.NAME,'NR')
# 如果选中了该iver.find_element_by_name('NR')
# # is_selected()检查是否选中该页面元素
# print(page.is_selected())页面元素,则返回一个Ture值
assert page.is_selected()==True
driver.quit()
(2)'''右键操作'''
driver=webdriver.Chrome()
driver.get('https://www.baidu.com/')
so=driver.find_element_by_id('kw')
action=ActionChains(driver)
action.context_click(so).perform() #鼠标左键操作
t.sleep(5)
driver.quit()
'''右键操作(百度网盘)''' 
driver=webdriver.Chrome()
driver.maximize_window()
driver.get('https://pan.baidu.com/')
t.sleep(3)
#输入帐号
driver.find_element_by_name('userName').send_keys('17742492653')
t.sleep(3)
#输入密码
driver.find_element_by_id('TANGRAM__PSP_4__password').send_keys('008395.@')
t.sleep(3)
#点击登录
driver.find_element_by_xpath('//*[@id="TANGRAM__PSP_4__submit"]').click()
t.sleep(3)
#点击弹出框的关闭
driver.find_element_by_xpath('/html/body/div[3列表]/div[1]').click()
t.sleep(5)
#选择我的资源
my=driver.find_element_by_xpath('//*[@id="layoutMain"]/div[2]/div[3列表]/div/div/dd[4操作列表]/div[2]/div[1]/a')
action=ActionChains(driver)
#对文件夹进行执行右击选中的
# action.context_click(my).perform()
action.double_click(my).perform()
t.sleep(3)
driver.quit()

3、键盘事件

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
import time as t
(1)'''粘贴(ctrl+c)、复制(ctrl+v)、删除(backspace)、回车键(enter)'''
driver=webdriver.Chrome()
driver.get('https://www.baidu.com/')
#搜索
search=driver.find_element(By.ID,'kw')
#搜索zhoujielun
search.send_keys('zhoujielun')
#ctrl+a全选
search.send_keys(Keys.CONTROL,'a')
t.sleep(3)
search.send_keys('周杰伦')
#ctrl+c复制
search.send_keys(Keys.CONTROL,'c')
t.sleep(3)
#删除
#search.send_keys(Keys.BACKSPACE)
t.sleep(6)
##ctrl+v粘贴
search.send_keys(Keys.CONTROL,'v')
t.sleep(3)
#回车键
search.send_keys(Keys.ENTER)
t.sleep(3)
driver.quit()
(2)'''浏览器的上下移动'''
driver=webdriver.Chrome()
driver.maximize_window()
driver.get('https://www.baidu.com/')
#在搜索框中输入周杰伦
driver.find_element(By.ID,'kw').send_keys('周杰伦')
#单击百度一下的按钮
driver.find_element(By.ID,'su').click()
t.sleep(3)
#搜索到页面后,浏览器页面往下一页移动
#将滚动条拖到最底部
#若要对页面中的内嵌窗口中的滚动条进行操作,要先定位到该内嵌窗口,在进行滚动条操作
# js
down='document.documentElement.scrollTop=10000'   #document.documentElement的去调用scrollTop.后面的数值是滚动条距离顶部的距离
#执行js(dwon)脚本
driver.execute_script(down)
t.sleep(5)
##浏览器页面往上一页移动
up='document.documentElement.scrollTop=0'
#执行up
driver.execute_script(up)
t.sleep(5)
driver.quit()

  

 

 

推荐阅读