国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Selenium4+Python3 - Iframe、Select控件、交互式彈出框、執(zhí)行JS、Cookie操作

這篇具有很好參考價(jià)值的文章主要介紹了Selenium4+Python3 - Iframe、Select控件、交互式彈出框、執(zhí)行JS、Cookie操作。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

一、iframe操作

iframe識(shí)別:
Selenium4+Python3 - Iframe、Select控件、交互式彈出框、執(zhí)行JS、Cookie操作,python,測試工具

語法:
driver.switch_to.frame(‘方式’)
1、常見處理方法三種

  • index:下標(biāo)
  • name:id或name屬性的值
  • webelement:元素

2、通過下標(biāo)進(jìn)入
進(jìn)入第一個(gè)iframe:

driver.switch_to.frame(0)

3、通過id或name屬性的值進(jìn)入
通過id或name屬性的值進(jìn)入指定的iframe:

driver.switch_to.frame('iframe')
driver.switch_to.frame('iframeName')

4、通過iframe元素進(jìn)入iframe
通過iframe元素進(jìn)入指定iframe:

iframe=driver.find_element(By.ID,"iframe")
driver.switch_to.frame(iframe)

完整案例代碼如下:

from selenium import webdriver
from selenium.webdriver.common.by import By
from webdriver_manager.chrome import ChromeDriverManager

driver = webdriver.Chrome(ChromeDriverManager().install())
driver.get("http://localhost:8080/iframeDemo.html")
# 通過下標(biāo)進(jìn)入frame
driver.switch_to.frame(0)
# 通過id或name屬性的值進(jìn)入指定的iframe
driver.switch_to.frame('iframe')
driver.switch_to.frame('iframeName')
# 通iframe元素進(jìn)入iframe
iframe=driver.find_element(By.ID,"iframe")
driver.switch_to.frame(iframe)
driver.find_element(By.ID,'user').clear()
driver.find_element(By.ID,'user').send_keys("this is a frame test !")
print(driver.find_element(By.ID,'user').get_attribute('value'))

二、select下拉框操作

1、select控件識(shí)別
Selenium4+Python3 - Iframe、Select控件、交互式彈出框、執(zhí)行JS、Cookie操作,python,測試工具
常見操作有兩種:一步到位,二次管控!
2、一步到位
一步到位: 直接定位元素點(diǎn)擊即可,示例如下:

# 一步到位,直接選擇內(nèi)蒙
driver.find_element(By.CSS_SELECTOR,"[value='0015']").click()
print(driver.find_element(By.CSS_SELECTOR,"[value='0015']").text)

3、二次管控
二次管控: 先定位select框,再定位select里的選項(xiàng),通過Select對(duì)象進(jìn)行強(qiáng)轉(zhuǎn),來調(diào)用select控件中的Api來達(dá)到操作的目的。

常見操作方法:

  • select_by_index():通過下標(biāo)選擇對(duì)應(yīng)項(xiàng)
  • select_by_value():通過value選擇對(duì)應(yīng)項(xiàng)
  • select_by_visible_text():通過可見文本選擇對(duì)應(yīng)項(xiàng)

示例代碼如下:

select = Select(driver.find_element(By.ID, "select"))
# 選擇第一個(gè)選項(xiàng)
select.select_by_index(0)
# 調(diào)用first_selected_option就能獲取當(dāng)前下拉框選中值啦
print(select.first_selected_option.text)
sleep(2)
# 選擇典韋
select.select_by_value("3")
# 調(diào)用first_selected_option就能獲取當(dāng)前下拉框選中值啦
print(select.first_selected_option.text)
sleep(2)
# 選擇凱
select.select_by_visible_text("凱")
# 調(diào)用first_selected_option就能獲取當(dāng)前下拉框選中值啦
print(select.first_selected_option.text)

4、遍歷所有選項(xiàng)

示例代碼如下:

示例代碼如下:

# 打印所有選項(xiàng)的text
for option in select.options:
    print("選項(xiàng)為:"+option.text)

完整代碼示例:

from time import sleep

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.select import Select
from webdriver_manager.chrome import ChromeDriverManager

driver = webdriver.Chrome(ChromeDriverManager().install())
driver.get("http://localhost:8080/SelectDemo.html")
# 一步到位,直接選擇典韋
# driver.find_element(By.CSS_SELECTOR,"[value='3']").click()
# print(driver.find_element(By.CSS_SELECTOR,"[value='3']").text)
select = Select(driver.find_element(By.ID, "select"))
# 選擇第一個(gè)選項(xiàng)
select.select_by_index(0)
# 調(diào)用first_selected_option就能獲取當(dāng)前下拉框選中值啦
print(select.first_selected_option.text)
sleep(2)
# 選擇典韋
select.select_by_value("3")
# 調(diào)用first_selected_option就能獲取當(dāng)前下拉框選中值啦
print(select.first_selected_option.text)
sleep(2)
# 選擇凱
select.select_by_visible_text("凱")
# 調(diào)用first_selected_option就能獲取當(dāng)前下拉框選中值啦
print(select.first_selected_option.text)

# 打印所有選項(xiàng)的text
for option in select.options:
    print("選項(xiàng)為:"+option.text)
sleep(2)

三、交互操作彈出框的處理

1、彈出框分類:
彈出框分為兩種,一種基于原生JavaScript寫出來的彈窗,另一種是自定義封裝好的樣式的彈出框,即原生JavaScript寫出來的彈窗,另一種彈窗用click()基本就能搞定。 原生JavaScript寫出來的彈窗又分為三種:

alert
Selenium4+Python3 - Iframe、Select控件、交互式彈出框、執(zhí)行JS、Cookie操作,python,測試工具
confirm
Selenium4+Python3 - Iframe、Select控件、交互式彈出框、執(zhí)行JS、Cookie操作,python,測試工具
prompt
Selenium4+Python3 - Iframe、Select控件、交互式彈出框、執(zhí)行JS、Cookie操作,python,測試工具

2、彈窗處理常用方法:
alert/confirm/prompt彈出框操作主要方法有:

driver.switch_to.alert:切換到alert彈出框上
alert.text:獲取文本值
accept() :點(diǎn)擊"確認(rèn)"
dismiss():點(diǎn)擊"取消"或者關(guān)閉對(duì)話框
send_keys() :輸入文本值 --僅限于prompt,在alert和confirm上沒有輸入框

alert彈窗處理

示例代碼如下:

# alert彈窗處理
driver.find_element(By.ID,"alert").click()
alert=driver.switch_to.alert
print(alert.text)
# 確定
alert.accept()
sleep(2)

confirm彈窗處理

示例代碼如下:

# dialog對(duì)話框處理
driver.find_element(By.ID,"dialog").click()
alert=driver.switch_to.alert
print(alert.text)
# 取消操作
alert.dismiss()
sleep(2)

prompt彈窗處理

# 彈窗輸入框
driver.find_element(By.ID,"welcome").click()
alert=driver.switch_to.alert
print(alert.text)
alert.send_keys("input 框")
alert.accept()
sleep(2)
print(alert.text)

四、執(zhí)行Js操作

在做web自動(dòng)化時(shí),有些情況selenium的api無法完成,需要通過第三方手段比如js來完成實(shí)現(xiàn),比如去改變某些元素對(duì)象的屬性或者進(jìn)行一些特殊的操作,本文將來講解怎樣來調(diào)用JavaScript完成特殊操作。

1、用法

driver.execute_script(js語句)

2、模擬場景
場景1

打開百度首頁,并彈窗提示hellow,world!,關(guān)閉彈窗,控制臺(tái)輸出彈窗文本hellow,world! 示例代碼如下:

# 執(zhí)行js語句
driver.execute_script("alert('hellow,world!')")
alert=driver.switch_to.alert
print(alert.text)
# 確定
alert.accept()

場景2
示例代碼如下:

# 將百度按鈕改成MyLove
element = driver.find_element(By.ID, "su");
driver.execute_script("document.getElementById('su').setAttribute('value', 'MyLove');", element);

效果如下:
Selenium4+Python3 - Iframe、Select控件、交互式彈出框、執(zhí)行JS、Cookie操作,python,測試工具
3、模擬滾動(dòng)條操作
在寫腳本時(shí),總會(huì)遇到一種情況,就是當(dāng)滾動(dòng)拉倒最下面了,表單或者下拉框、按鈕這些元素未在當(dāng)前頁面展示,而webdriver提供的方法都是操作當(dāng)前頁面可見的元素,這時(shí)我們使用JavaScript操作瀏覽器的滾動(dòng)條,滾動(dòng)后使頁面元素可見,就可完成后面的元素操作了。

核心思路:
就是使用js去控制瀏覽器滾動(dòng)條的位置,在使用selenium調(diào)用JavaScript操作js完成。

下面舉例幾種常用滾動(dòng)條的js代碼示例如下:

//拖動(dòng)滾動(dòng)條至底部
document.documentElement.scrollTop=10000
window.scrollTo(0,document.body.scrollHeight)

//拖動(dòng)滾動(dòng)條至頂部
document.documentElement.scrollTop=0
arguments[0].scrollIntoView(false);

//左右方向的滾動(dòng)條可以使用window.scrollTo(左邊距,上邊距)方法
window.scrollTo(200,1000)

實(shí)際案例
以博客園我的文章列表頁為例,來演示滾動(dòng)條操作,具體代碼如下:

from time import sleep

from selenium import webdriver
from selenium.webdriver.common.by import By
from webdriver_manager.chrome import ChromeDriverManager

driver = webdriver.Chrome(ChromeDriverManager().install())
driver.get("https://www.cnblogs.com/longronglang/")
driver.maximize_window()

# 獲取第一篇文章列表元素
element = driver.find_element(By.CSS_SELECTOR,".forFlow [role='article']:nth-of-type(1) .vertical-middle")
sleep(2)
# 將頁面滾動(dòng)條拖到底部
driver.execute_script("window.scrollTo(0,document.body.scrollHeight)")
# 將滾動(dòng)條滾動(dòng)至第三篇文章列表位置
driver.execute_script("arguments[0].scrollIntoView(true)", element)
sleep(2)
# 將滾動(dòng)條滾動(dòng)到頂部
driver.execute_script("arguments[0].scrollIntoView(false)", element)
sleep(2)
# 將滾動(dòng)條滾動(dòng)到指定位置
driver.execute_script("window.scrollTo(200,1000)")

五、Cookie操作之完美繞過驗(yàn)證碼

下面我們就使用cookie操作,繞過登錄驗(yàn)證碼

還是以博客園為例,下面本文來介紹下如何繞過下圖驗(yàn)證碼,進(jìn)入博客園

1、工具準(zhǔn)備

  • Fiddler.exe
  • IDEA/Eclipse
  • selenium的cookie操作

2、使用Fiddler抓包
一般登陸網(wǎng)站成功后,會(huì)生成一個(gè)已登錄狀態(tài)的cookie,那么只需要直接把這個(gè)值拿到,用selenium進(jìn)行addCookie操作即可。

可以先手動(dòng)登錄一次,然后抓取這個(gè)cookie,這里我們就需要用抓包工具fiddler了

先打開博客園登錄界面,手動(dòng)輸入賬號(hào)和密碼(不要點(diǎn)登錄按鈕)
Selenium4+Python3 - Iframe、Select控件、交互式彈出框、執(zhí)行JS、Cookie操作,python,測試工具
打開fiddler抓包工具,此時(shí)再點(diǎn)博客園登錄按鈕
Selenium4+Python3 - Iframe、Select控件、交互式彈出框、執(zhí)行JS、Cookie操作,python,測試工具
登錄成功后,再查看cookie變化,發(fā)現(xiàn)多了兩組參數(shù),多的這兩組參數(shù)就是我們想要的,copy出來,一會(huì)有用
Selenium4+Python3 - Iframe、Select控件、交互式彈出框、執(zhí)行JS、Cookie操作,python,測試工具
3、cookie操作語法

driver.add_cookie()
add_cookie(cookie_dict)方法里面參數(shù)是cookie_dict,說明里面參數(shù)是字典類型。

源碼官方文檔介紹:

add_cookie(self, cookie_dict)  

Adds a cookie to your current session.  
  
Args:  

- cookie_dict: A dictionary object, with required keys - "name" and "value"; 
optional keys - "path", "domain", "secure", "expiry"  

Usage:  

driver.add_cookie({'name' : 'foo', 'value' : 'bar'})  
driver.add_cookie({'name' : 'foo', 'value' : 'bar', 'path' : '/'})  
driver.add_cookie({'name' : 'foo', 'value' : 'bar', 'path' : '/', 'secure':True})

從官方的文檔里面可以看出,添加cookie時(shí)候傳入字典類型就可以了,等號(hào)左邊的是name,等號(hào)左邊的是value。

把前面抓到的兩組數(shù)據(jù)(參數(shù)不僅僅只有name和value),寫成字典類型:

{'name':'.CNBlogsCookie','value''2C3AE01E461B2D2F1572D02CB936D77A053089AA2xxxx...'}
{'name':'.Cnblogs.AspNetCore.Cookies','value':'CfDJ8Mmb5OBERd5FqtiQlKZZIG4HKz_Zxxx...'}

4、完整示例代碼

# coding:utf-8
from selenium import webdriver
import time

driver = webdriver.Chrome()
driver.maximize_window()
driver.get("https://www.cnblogs.com/longronglang/")

# 添加cookie
c1 = {u'domain': u'.cnblogs.com',
      u'name': u'.CNBlogsCookie',
      u'value': u'xxxx',
      u'expiry': 15412950521,
      u'path': u'/',
      u'httpOnly': True,
      u'secure': False}

c2 = {u'domain': u'.cnblogs.com',
      u'name': u'.Cnblogs.AspNetCore.Cookies',
      u'value': u'xxxx',
      u'expiry': 15412950521,
      u'path': u'/',
      u'httpOnly': True,
      u'secure': False}
# 添加2個(gè)值
driver.add_cookie(c1)  
driver.add_cookie(c2)
time.sleep(3)

# 刷新下頁面就見證奇跡了
driver.refresh()
# 再來個(gè)登錄后操作
driver.find_element_by_link_text(u"博客園").click()
driver.find_element_by_link_text("Refain").click()

效果圖
Selenium4+Python3 - Iframe、Select控件、交互式彈出框、執(zhí)行JS、Cookie操作,python,測試工具
注意:文章來源地址http://www.zghlxwxcb.cn/news/detail-767637.html

  • 登錄時(shí)候要勾選下次自動(dòng)登錄按鈕。
  • addCookie()只添加name和value,對(duì)于博客園的登錄是不成功。
  • 本方法并不適合所有的網(wǎng)站,一般像博客園這種記住登錄狀態(tài)的才會(huì)適合。

到了這里,關(guān)于Selenium4+Python3 - Iframe、Select控件、交互式彈出框、執(zhí)行JS、Cookie操作的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 瀏覽器常用基本操作之python3+selenium4自動(dòng)化測試(基礎(chǔ)篇)

    瀏覽器常用基本操作之python3+selenium4自動(dòng)化測試(基礎(chǔ)篇)

    1、打開指定的網(wǎng)頁地址 我們使用selenium進(jìn)行自動(dòng)化測試時(shí),打開瀏覽器之后,第一步就是讓瀏覽器訪問我們指定的地址,可使用get方法實(shí)現(xiàn) 1 2 3 from selenium import webdriver driver = webdriver.Edge() driver.get( \\\'https://www.baidu.com/\\\' )?? # 本行用于訪問指定的地址 2、獲取當(dāng)前頁面url 我們?cè)?/p>

    2024年02月01日
    瀏覽(93)
  • 【Python爬蟲】selenium4新版本使用指南

    【Python爬蟲】selenium4新版本使用指南

    Selenium是一個(gè)用于Web應(yīng)用程序測試的工具。Selenium測試直接運(yùn)行在瀏覽器中,就像真正的用戶在操作一樣。支持的瀏覽器包括 IE(7, 8, 9, 10, 11) , Mozilla Firefox , Safari , Google Chrome , Opera , Edge 等。這個(gè)工具的主要功能包括:測試與瀏覽器的兼容性——測試應(yīng)用程序看是否能

    2024年02月06日
    瀏覽(22)
  • python爬蟲之selenium4使用(萬字講解)

    python爬蟲之selenium4使用(萬字講解)

    聲明以下的例子,只是來作為測試學(xué)習(xí),并不作為真正的爬蟲 我們?cè)跒g覽一些網(wǎng)站時(shí),有不少內(nèi)容是通過 JavaScript動(dòng)態(tài)渲染的,或是 AJAX 請(qǐng)求后端加載數(shù)據(jù),這其中涉及到了不少加密參數(shù)如 token,sign,難以找規(guī)律,較為復(fù)雜。像前面的百度貼吧的一個(gè)評(píng)論的回復(fù),百度翻譯等

    2024年04月10日
    瀏覽(23)
  • 【Python爬蟲 ? selenium】selenium4新版本自動(dòng)獲取驅(qū)動(dòng)的常見問題

    【Python爬蟲 ? selenium】selenium4新版本自動(dòng)獲取驅(qū)動(dòng)的常見問題

    關(guān)于上次發(fā)布的文章《【Python爬蟲 ? selenium】selenium4新版本使用指南》很多人反饋說自動(dòng)獲取的驅(qū)動(dòng)會(huì)導(dǎo)致閃退,本次文章給出詳細(xì)配置。 首先說一下大家閃退的問題。我在低版本的python中,安裝selenium,發(fā)現(xiàn)安裝的是舊版本,并不是selenium4的版本,就導(dǎo)致用法還是selenium

    2024年01月17日
    瀏覽(41)
  • Python+Selenium4瀏覽器交互_web自動(dòng)化(2)

    Python+Selenium4瀏覽器交互_web自動(dòng)化(2)

    目錄 0. 上節(jié)內(nèi)容回顧 1 . 瀏覽器基本操作 1.1 啟動(dòng) 退出 1. 手動(dòng)安裝driver ,啟動(dòng)瀏覽器時(shí),需要傳遞2個(gè)參數(shù): 1.2 窗口設(shè)置 1.3 頁面導(dǎo)航 1.4 獲取頁面信息 1.5 頁面截圖 2. 瀏覽器的高級(jí)操作 2.1 窗口切換 2.2 操作Cookies 2.3 執(zhí)行JavaScript 今日內(nèi)容:瀏覽器交互(調(diào)整窗口大小、導(dǎo)航

    2023年04月08日
    瀏覽(93)
  • Python+Selenium4三大等待&預(yù)期條件_web自動(dòng)化(4)

    Python+Selenium4三大等待&預(yù)期條件_web自動(dòng)化(4)

    目錄 0. 上節(jié)回顧 1. 定位失敗的原因 2. 強(qiáng)制等待 3. 隱式等待 4. 顯式等待 【重點(diǎn)難點(diǎn)】 4.1. 實(shí)例化 WebDriverWait 對(duì)象 4.2. 指定等待條件 4.3. 等待條件的具體要求 4.3. 1. 等待條件是一個(gè)函數(shù) 4.3. 2. 返回值是布爾值 4.3. 3. 只有一個(gè)參數(shù),參數(shù)值是driver 4.3. 4. 出現(xiàn)異常 5. 流暢等待 (

    2024年02月11日
    瀏覽(21)
  • Python+Selenium4環(huán)境搭建與原理講解_web自動(dòng)化(1)

    Python+Selenium4環(huán)境搭建與原理講解_web自動(dòng)化(1)

    1. 認(rèn)識(shí)Selenium 2. Selenium 三大組件 3. Selenium自動(dòng)化測試環(huán)境搭建 3.1 安裝selenium 庫 3.2 安裝瀏覽器驅(qū)動(dòng) 1. 查看瀏覽器版本號(hào) 2. 下載瀏覽器驅(qū)動(dòng) 3. 把driver移動(dòng)到Path目錄 4. 驗(yàn)證driver就緒 ? 3.3 啟動(dòng)瀏覽器 4. Selenium自動(dòng)化測試環(huán)境的自動(dòng)化配置 1. 安裝依賴 2. 啟動(dòng)瀏覽器 5. Selenium工作

    2024年02月06日
    瀏覽(168)
  • Python Selenium4.3.0(新語法) web自動(dòng)化測試工具

    1 介紹 Selenium是一個(gè)用于Web應(yīng)用程序測試的工具。Selenium測試直接運(yùn)行在瀏覽器中,就像真正的用戶在操作一樣。 支持的瀏覽器包括IE(7, 8, 9, 10, 11),Mozilla Firefox,Safari,Google Chrome,Opera,Edge等 這個(gè)工具的主要功能包括:測試與瀏覽器的兼容性——測試應(yīng)用程序看是否能夠

    2024年01月24日
    瀏覽(33)
  • selenium+python處理iframe切換

    selenium+python處理iframe切換有3種方法: 1、如果iframe有id或name,則可根據(jù)iframe的id或name切換。 2、把iframe當(dāng)作頁面元素,通過元素定位表達(dá)式進(jìn)行切換。 3、將iframe存儲(chǔ)到list中,然后根據(jù)ifrane的索引定位 (適合頁面有多個(gè)iframe,且前兩種方法無法使用)。 如果頁面有多層ifram

    2024年02月11日
    瀏覽(15)
  • 基于python下selenium庫實(shí)現(xiàn)交互式圖片保存操作(批量保存瀏覽器中的圖片)

    基于python下selenium庫實(shí)現(xiàn)交互式圖片保存操作(批量保存瀏覽器中的圖片)

    Selenium是最廣泛使用的開源Web UI(用戶界面)自動(dòng)化測試套件之一,可以通過編程與瀏覽量的交互式操作對(duì)網(wǎng)頁進(jìn)行自動(dòng)化控制?;谶@種操作進(jìn)行數(shù)據(jù)保存操作,尤其是在圖像數(shù)據(jù)的批量保存上占據(jù)優(yōu)勢。本博文基于selenium 與jupyterlab實(shí)現(xiàn)批量保存瀏覽器搜索到的圖片。 Se

    2024年01月24日
    瀏覽(56)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包