python中对jsjavascript、ActionChains和Keys的处理(编辑器、鼠标和键盘事件)
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()