python爬虫之iframe处理+动作链
selenium处理iframe
1、如果定位的标签存在于iframe标签之中,则必须使用switch_to.frame(id)
2、动作链(拖动):from selenium.webdriver import ActionChains
(1)实例化一个动作链对象:action = ActionChains(bro)
(2)click_and_hold(div):长按且点击操作
(3)move_by_offset(x,y)
(4)perform()让动作链立即执行
(5)action.release()释放动作链对象
需求:将方框拖入另一个方框中
1、拖动前
(2)拖动后
实现代码如下:
#需求:拖动方块到指定位置
from selenium import webdriver
from time import sleep
from selenium.webdriver.common.by import By
#导入动作链对应的类
from selenium.webdriver import ActionChains
from selenium.webdriver.edge.options import Options
edge_options = Options()
edge_options.add_argument("--guest") # 启用guest模式。
# edge_options.add_experimental_option("detach",True)
# 创建一个Edge WebDriver实例
bro = webdriver.Edge(options=edge_options)
# option = webdriver.EdgeOptions()
# option.add_experimental_option("detach", True)
#
# bro = webdriver.Edge(options=option)
bro.get('https://www.runoob.com/try/try.php?filename=jqueryui-api-droppable')
#如果定位的标签是存在于iframe标签之中的则必须通过如下操作在进行标签定位
bro.switch_to.frame('iframeResult')#切换浏览器标签定位的作用域
div = bro.find_element(By.ID,'draggable')
#动作链
action = ActionChains(bro)
#点击长按指定的标签
action.click_and_hold(div)
for i in range(5):
#perform()立即执行动作链操作
#move_by_offset(x,y):x水平方向,y竖直方向
action.move_by_offset(55,0).perform()
sleep(0.3)
#释放动作链
action.release()
bro.quit()
标签:webdriver,python,selenium,爬虫,bro,iframe,action,import,options
From: https://blog.csdn.net/qq_55829395/article/details/139869747