Python:selenium处理iframe

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()

猜你喜欢

转载自blog.csdn.net/leowutooo/article/details/124998751