selenium处理iframe以及动作链
- 如果定位的标签在iframe中则必须要使用switch_to.frame(‘id’)
- 动作链(拖动):from selenium.webdriver import ActionChains导入动作链包
- 实例化一个动作链对象
- 触发长按且点击操作
- action.click_and_hold(div)
- 进行拖动
- action.move_by_offset(17,10)
- 动作立即执行
- 释放动作链
- 实操:
from selenium import webdriver
from time import sleep
# 导入动作链的类
from selenium.webdriver import ActionChains
bro=webdriver.Edge()
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()立即 执行动作链操作
action.move_by_offset(17,10).perform()
sleep(0.2)
# 释放动作链
action.release()
bro.quit()
from selenium import webdriver
from time import sleep
bro=webdriver.Edge()
bro.get('https://qzone.qq.com/')
bro.switch_to.frame('login_frame')
a_tag=bro.find_element_by_id("img_out_2609320777")
a_tag.click()
from selenium import webdriver
from time import sleep
# 实现无可视化界面
# 实现规避检测
from selenium.webdriver.edge.options import Options
edge_options=Options()
edge_options.add_argument('--headless')
edge_options.add_argument('--disable-gpu')
# 如何实现让selenium规避被检测到的风险
edge_options.add_experimental_option('excludeSwitches',['enable-automation'])
bro=webdriver.Edge(options=edge_options)
# 无可视化界面(无头浏览器),phantomJs
bro.get('https://baidu.com')
print(bro.page_source)
bro.quit()