0.iframe处理+动作链
iframe是什么?
-- 在一个页面当中可以嵌套一个子页面,这个子页面就可以由iframe标签帮我们实现
-- 如果定位的标签存在于iframe标签之中,则必须使用:switch_to.frame(id)
-- 动作链(拖动):from selenium.webdriver import ActionChains
- 实例化一个动作链对象:action=ActionChains(bro)
- 接下来就可以触发动作链当中的长按点击操作:click_and_hold(div) - move_by_offset(x,y)
- perform() 让动作链立即执行
- action.release()释放动作链对象
1.selenium处理iframe
实例:
from selenium import webdriver
from time import sleep
#导入动作链对应的类
from selenium.webdriver import ActionChains
bro=webdriver.Chrome(executable_path='./chromedriver')
bro.get('https://www.runoob.com/try/try.php?filename=jqueryui-api-droppable')
##实现拖动操作
#网上找标签发现一个iframe里面,如果我想要找的标签被包含在iframe里,则必须进行如下操作进行定位
bro.switch_to.frame('iframeResult') #切换浏览器标签的作用域,如果不切换,就自动默认在外部的大的那个div下面
div=bro.find_element_by_id('draggable') #粘贴的是一个div里的id属性信息
#动作链
action=ActionChains(bro)
#点击长按指定的标签
action.click_and_hold(div)
#是一点一点地拖动而不是一次性拖动,所以要写一个循环!!
for i in range(5):
action.move_by_offset(17,0).perform() #做移动偏移17个像素,perform表示立即执行动作链
sleep(0.3) #每拖动一次就停止几秒
action.release()#------释放动作链,
#3#########################需要注意,要给个方向,只给个十七没说上下拖动还是水平拖动,应该改成action.move_by_offset(17,0).perform()
print(div)
#关闭浏览器
bro.quit()