selenium动作链和iframe的处理

iframe 动作链是什么?
iframe 一个标签
动作链 模拟人类的拖动的操作

Python 网络爬虫
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标签之中的则必须通过如下操作在进行标签定位
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(17,0).perform()
    sleep(0.5)

#释放动作链
action.release()

bro.quit()
'''
selenium处理iframe
如果定的标签处于iframe中就需要使用switch_to.find(id)进入作用域
动作链:
    实例化一个动作链对象:action = ActionChains(bro)
    click_and_hold:常按且点击住
    move_by_offset(x,y):沿着x轴,y轴移动
    perform:立即执行
    action.release:释放动作链
'''
from selenium import webdriver
from time import sleep
from selenium.webdriver.common.by import By

#导入动作链的对象
from selenium.webdriver import ActionChains

#实例化一个浏览器对象
bro = webdriver.Chrome()
#对目标网址发起get请求
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点击并拖住‘请拖拽我’
action.click_and_hold(div)
for i in range(5):
    #perform:立即执行
    #move_by_offset(x,y)沿着x轴和y轴移动
    action.move_by_offset(17,0).perform()
    sleep(0.5)
#释放动作链
action.release()

Selenium 模块2_iframe处理_动作链

先实例化

from selenium import webdriver
#实例化一个浏览器对象,获取网址
web_requests=webdriver.Chrome(executable_path='./chormedriver')
web_requests.get('')

iframe 动作链是什么?

iframe 一个标签
动作链 模拟人类的拖动的操作

如果定位的标签是存在于iframe标签之中 则必须通过如下操作在进行标签定位

#锁定iframe作用域
#switch_to.frame参数是id
web_requests.switch_to.frame('id')#切换浏览器标签定位的作用域

动作链

from selenium import webdriver
from selenium.webdriver import ActionChains
from time import sleep
#实例化一个浏览器对象,获取网址
web_requests=webdriver.Chrome(executable_path='./chormedriver')
web_requests.get('https:xxxx.com/')
#锁定iframe作用域
#switch_to.frame参数是id
web_requests.switch_to.frame('id')#切换浏览器标签定位的作用域
div=web_requests.find_element_by_id('draggable')

#动作链实例化
action=ActionChains(web_requests)
#点击长按指定标签
action.click_and_hold(div)
for i in(range(5)):

    #分5次,每次向右移动17个像素单位
    #move_by_offset(x,y)x水平 ,y竖直
    action.move_by_offset(17,0).perform()#perform()立即执行动作链操作
    #暂停一下0.2秒能看清楚
    sleep(0.2)
#释放动作链接
action.release()

selenium QQ空间登录实例

from selenium import webdriver
from  time import sleep
#实例化
bro=webdriver.Chrome('./chromedriver.exe')
#网址
bro.get('https://qzone.qq.com')
#定位
bro.switch_to.frame('login_frame')
a_tag=bro.find_element_by_id('switcher_plogin')
a_tag.click()
urerName_tag=bro.find_element_by_id('u')
passWord_tag=bro.find_element_by_id('p')
#账户
urerName_tag.send_keys('123')
#密码
passWord_tag.send_keys('456')
btn=bro.find_element_by_id('login_button')
btn.click()
sleep(3)
bro.quit()

无头浏览器_规避检测

from selenium import webdriver
#实现无可视化界面的
from selenium.webdriver.chrome.options import Options
#实现规避检测
from selenium.webdriver import ChromeOptions


#实现无可视化界面操作
chrome_options=Options()
chrome_options.add_argument('--headless')
chrome_options.add_argument('--dissable-gpu')
#实现规避检测
option=ChromeOptions()
option.add_experimental_option('excludeSwitches',['enable-automation'])
#实例化
bro=webdriver.Chrome('./chromedriver.exe',chrome_options=chrome_options,options=option)
#网址
bro.get('https://www.ai8py.com')
print(bro.page_source)

发表评论

邮箱地址不会被公开。 必填项已用*标注