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

selenium的其它使用方法

這篇具有很好參考價(jià)值的文章主要介紹了selenium的其它使用方法。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

selenium的其它使用方法

1. selenium標(biāo)簽頁(yè)的切換

當(dāng)selenium控制瀏覽器打開(kāi)多個(gè)標(biāo)簽頁(yè)時(shí),如何控制瀏覽器在不同的標(biāo)簽頁(yè)中進(jìn)行切換呢?需要我們做以下兩步:

  • 獲取所有標(biāo)簽頁(yè)的窗口句柄

  • 利用窗口句柄字切換到句柄指向的標(biāo)簽頁(yè)

    • 這里的窗口句柄是指:指向標(biāo)簽頁(yè)對(duì)象的標(biāo)識(shí)
    • 關(guān)于句柄請(qǐng)課后了解更多,本小節(jié)不做展開(kāi)
  • 具體的方法

    # 1. 獲取當(dāng)前所有的標(biāo)簽頁(yè)的句柄構(gòu)成的列表
    current_windows = driver.window_handles
    
    # 2. 根據(jù)標(biāo)簽頁(yè)句柄列表索引下標(biāo)進(jìn)行切換
    driver.switch_to.window(current_windows[0])
    
  • 參考代碼示例:

    import time
    from selenium import webdriver
    
    driver = webdriver.Chrome()
    driver.get("https://www.baidu.com/")
    
    time.sleep(1)
    driver.find_element_by_id('kw').send_keys('python')
    time.sleep(1)
    driver.find_element_by_id('su').click()
    time.sleep(1)
    
    # 通過(guò)執(zhí)行js來(lái)新開(kāi)一個(gè)標(biāo)簽頁(yè)
    js = 'window.open("https://www.sogou.com");'
    driver.execute_script(js)
    time.sleep(1)
    
    # 1. 獲取當(dāng)前所有的窗口
    windows = driver.window_handles
    
    time.sleep(2)
    # 2. 根據(jù)窗口索引進(jìn)行切換
    driver.switch_to.window(windows[0])
    time.sleep(2)
    driver.switch_to.window(windows[1])
    
    time.sleep(6)
    driver.quit()
    

知識(shí)點(diǎn):掌握 selenium控制標(biāo)簽頁(yè)的切換

2. switch_to切換frame標(biāo)簽

iframe是html中常用的一種技術(shù),即一個(gè)頁(yè)面中嵌套了另一個(gè)網(wǎng)頁(yè),selenium默認(rèn)是訪問(wèn)不了frame中的內(nèi)容的,對(duì)應(yīng)的解決思路是driver.switch_to.frame(frame_element)。接下來(lái)我們通過(guò)qq郵箱模擬登陸來(lái)學(xué)習(xí)這個(gè)知識(shí)點(diǎn)
  • 參考代碼:

    import time
    from selenium import webdriver
    
    driver = webdriver.Chrome()
    
    url = 'https://mail.qq.com/cgi-bin/loginpage'
    driver.get(url)
    time.sleep(2)
    
    login_frame = driver.find_element_by_id('login_frame') # 根據(jù)id定位 frame元素
    driver.switch_to.frame(login_frame) # 轉(zhuǎn)向到該frame中
    
    driver.find_element_by_xpath('//*[@id="u"]').send_keys('1596930226@qq.com')
    time.sleep(2)
    
    driver.find_element_by_xpath('//*[@id="p"]').send_keys('hahamimashicuode')
    time.sleep(2)
    
    driver.find_element_by_xpath('//*[@id="login_button"]').click()
    time.sleep(2)
    
    """操作frame外邊的元素需要切換出去"""
    windows = driver.window_handles
    driver.switch_to.window(windows[0])
    
    content = driver.find_element_by_class_name('login_pictures_title').text
    print(content)
    
    driver.quit()
    
  • 總結(jié):

    • 切換到定位的frame標(biāo)簽嵌套的頁(yè)面中

      • driver.switch_to.frame(通過(guò)find_element_by函數(shù)定位的frame、iframe標(biāo)簽對(duì)象)
    • 利用切換標(biāo)簽頁(yè)的方式切出frame標(biāo)簽

      • windows = driver.window_handles
        driver.switch_to.window(windows[0])
        

知識(shí)點(diǎn):掌握 selenium控制frame標(biāo)簽的切換

3. selenium對(duì)cookie的處理

selenium能夠幫助我們處理頁(yè)面中的cookie,比如獲取、刪除,接下來(lái)我們就學(xué)習(xí)這部分知識(shí)

3.1 獲取cookie

driver.get_cookies()返回列表,其中包含的是完整的cookie信息!不光有name、value,還有domain等cookie其他維度的信息。所以如果想要把獲取的cookie信息和requests模塊配合使用的話,需要轉(zhuǎn)換為name、value作為鍵值對(duì)的cookie字典

# 獲取當(dāng)前標(biāo)簽頁(yè)的全部cookie信息
print(driver.get_cookies())
# 把cookie轉(zhuǎn)化為字典
cookies_dict = {cookie[‘name’]: cookie[‘value’] for cookie in driver.get_cookies()}
3.2 刪除cookie
#刪除一條cookie
driver.delete_cookie("CookieName")

# 刪除所有的cookie
driver.delete_all_cookies()

知識(shí)點(diǎn):掌握 利用selenium獲取cookie的方法

4. selenium控制瀏覽器執(zhí)行js代碼

selenium可以讓瀏覽器執(zhí)行我們規(guī)定的js代碼,運(yùn)行下列代碼查看運(yùn)行效果

import time
from selenium import webdriver

driver = webdriver.Chrome()
driver.get("http://www.itcast.cn/")
time.sleep(1)

js = 'window.scrollTo(0,document.body.scrollHeight)' # js語(yǔ)句
driver.execute_script(js) # 執(zhí)行js的方法

time.sleep(5)
driver.quit()
  • 執(zhí)行js的方法:driver.execute_script(js)

知識(shí)點(diǎn):掌握 selenium控制瀏覽器執(zhí)行js代碼的方法

5. 頁(yè)面等待

頁(yè)面在加載的過(guò)程中需要花費(fèi)時(shí)間等待網(wǎng)站服務(wù)器的響應(yīng),在這個(gè)過(guò)程中標(biāo)簽元素有可能還沒(méi)有加載出來(lái),是不可見(jiàn)的,如何處理這種情況呢?

  1. 頁(yè)面等待分類(lèi)
  2. 強(qiáng)制等待介紹
  3. 顯式等待介紹
  4. 隱式等待介紹
  5. 手動(dòng)實(shí)現(xiàn)頁(yè)面等待
5.1 頁(yè)面等待的分類(lèi)

首先我們就來(lái)了解以下selenium頁(yè)面等待的分類(lèi)

  1. 強(qiáng)制等待
  2. 隱式等待
  3. 顯式等待
5.2 強(qiáng)制等待(了解)
  • 其實(shí)就是time.sleep()
  • 缺點(diǎn)時(shí)不智能,設(shè)置的時(shí)間太短,元素還沒(méi)有加載出來(lái);設(shè)置的時(shí)間太長(zhǎng),則會(huì)浪費(fèi)時(shí)間
5.3 隱式等待
  • 隱式等待針對(duì)的是元素定位,隱式等待設(shè)置了一個(gè)時(shí)間,在一段時(shí)間內(nèi)判斷元素是否定位成功,如果完成了,就進(jìn)行下一步

  • 在設(shè)置的時(shí)間內(nèi)沒(méi)有定位成功,則會(huì)報(bào)超時(shí)加載

  • 示例代碼

    from selenium import webdriver
    
    driver = webdriver.Chrome()  
    
    driver.implicitly_wait(10) # 隱式等待,最長(zhǎng)等20秒  
    
    driver.get('https://www.baidu.com')
    
    driver.find_element_by_xpath()
    
    
5.4 顯式等待(了解)
  • 每經(jīng)過(guò)多少秒就查看一次等待條件是否達(dá)成,如果達(dá)成就停止等待,繼續(xù)執(zhí)行后續(xù)代碼

  • 如果沒(méi)有達(dá)成就繼續(xù)等待直到超過(guò)規(guī)定的時(shí)間后,報(bào)超時(shí)異常

  • 示例代碼

    from selenium import webdriver  
    from selenium.webdriver.support.wait import WebDriverWait  
    from selenium.webdriver.support import expected_conditions as EC  
    from selenium.webdriver.common.by import By 
    
    driver = webdriver.Chrome()
    
    driver.get('https://www.baidu.com')
    
    # 顯式等待
    WebDriverWait(driver, 20, 0.5).until(
        EC.presence_of_element_located((By.LINK_TEXT, '好123')))  
    # 參數(shù)20表示最長(zhǎng)等待20秒
    # 參數(shù)0.5表示0.5秒檢查一次規(guī)定的標(biāo)簽是否存在
    # EC.presence_of_element_located((By.LINK_TEXT, '好123')) 表示通過(guò)鏈接文本內(nèi)容定位標(biāo)簽
    # 每0.5秒一次檢查,通過(guò)鏈接文本內(nèi)容定位標(biāo)簽是否存在,如果存在就向下繼續(xù)執(zhí)行;如果不存在,直到20秒上限就拋出異常
    
    print(driver.find_element_by_link_text('好123').get_attribute('href'))
    driver.quit() 
    
5.5 手動(dòng)實(shí)現(xiàn)頁(yè)面等待

在了解了隱式等待和顯式等待以及強(qiáng)制等待后,我們發(fā)現(xiàn)并沒(méi)有一種通用的方法來(lái)解決頁(yè)面等待的問(wèn)題,比如“頁(yè)面需要滑動(dòng)才能觸發(fā)ajax異步加載”的場(chǎng)景,那么接下來(lái)我們就以淘寶網(wǎng)首頁(yè)為例,手動(dòng)實(shí)現(xiàn)頁(yè)面等待

  • 原理:
    • 利用強(qiáng)制等待和顯式等待的思路來(lái)手動(dòng)實(shí)現(xiàn)
    • 不停的判斷或有次數(shù)限制的判斷某一個(gè)標(biāo)簽對(duì)象是否加載完畢(是否存在)
  • 實(shí)現(xiàn)代碼如下:
import time
from selenium import webdriver
driver = webdriver.Chrome('/home/worker/Desktop/driver/chromedriver')

driver.get('https://www.taobao.com/')
time.sleep(1)

# i = 0
# while True:
for i in range(10):
    i += 1
    try:
        time.sleep(3)
        element = driver.find_element_by_xpath('//div[@class="shop-inner"]/h3[1]/a')
        print(element.get_attribute('href'))
        break
    except:
        js = 'window.scrollTo(0, {})'.format(i*500) # js語(yǔ)句
        driver.execute_script(js) # 執(zhí)行js的方法
driver.quit()

知識(shí)點(diǎn):掌握 手動(dòng)實(shí)現(xiàn)頁(yè)面等待

6. selenium開(kāi)啟無(wú)界面模式

絕大多數(shù)服務(wù)器是沒(méi)有界面的,selenium控制谷歌瀏覽器也是存在無(wú)界面模式的,這一小節(jié)我們就來(lái)學(xué)習(xí)如何開(kāi)啟無(wú)界面模式(又稱之為無(wú)頭模式)

  • 開(kāi)啟無(wú)界面模式的方法
    • 實(shí)例化配置對(duì)象
      • options = webdriver.ChromeOptions()
    • 配置對(duì)象添加開(kāi)啟無(wú)界面模式的命令
      • options.add_argument("--headless")
    • 配置對(duì)象添加禁用gpu的命令
      • options.add_argument("--disable-gpu")
    • 實(shí)例化帶有配置對(duì)象的driver對(duì)象
      • driver = webdriver.Chrome(chrome_options=options)
  • 注意:macos中chrome瀏覽器59+版本,Linux中57+版本才能使用無(wú)界面模式!
  • 參考代碼如下:
from selenium import webdriver

options = webdriver.ChromeOptions() # 創(chuàng)建一個(gè)配置對(duì)象
options.add_argument("--headless") # 開(kāi)啟無(wú)界面模式
options.add_argument("--disable-gpu") # 禁用gpu

# options.set_headles() # 無(wú)界面模式的另外一種開(kāi)啟方式
driver = webdriver.Chrome(chrome_options=options) # 實(shí)例化帶有配置的driver對(duì)象

driver.get('http://www.itcast.cn')
print(driver.title)
driver.quit()

知識(shí)點(diǎn):掌握 selenium開(kāi)啟無(wú)界面模式

7. selenium使用代理ip

selenium控制瀏覽器也是可以使用代理ip的!

  • 使用代理ip的方法

    • 實(shí)例化配置對(duì)象
      • options = webdriver.ChromeOptions()
    • 配置對(duì)象添加使用代理ip的命令
      • options.add_argument('--proxy-server=http://202.20.16.82:9527')
    • 實(shí)例化帶有配置對(duì)象的driver對(duì)象
      • driver = webdriver.Chrome('./chromedriver', chrome_options=options)
  • 參考代碼如下:文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-824319.html

    from selenium import webdriver
    
    options = webdriver.ChromeOptions() # 創(chuàng)建一個(gè)配置對(duì)象
    options.add_argument('--proxy-server=http://202.20.16.82:9527') # 使用代理ip
    
    driver = webdriver.Chrome(chrome_options=options) # 實(shí)例化帶有配置的driver對(duì)象
    
    driver.get('http://www.itcast.cn')
    print(driver.title)
    driver.quit()
    

知識(shí)點(diǎn):了解 selenium使用代理ip

8. selenium替換user-agent

selenium控制谷歌瀏覽器時(shí),User-Agent默認(rèn)是谷歌瀏覽器的,這一小節(jié)我們就來(lái)學(xué)習(xí)使用不同的User-Agent

  • 替換user-agent的方法

    • 實(shí)例化配置對(duì)象
      • options = webdriver.ChromeOptions()
    • 配置對(duì)象添加替換UA的命令
      • options.add_argument('--user-agent=Mozilla/5.0 HAHA')
    • 實(shí)例化帶有配置對(duì)象的driver對(duì)象
      • driver = webdriver.Chrome('./chromedriver', chrome_options=options)
  • 參考代碼如下:

    from selenium import webdriver
    
    options = webdriver.ChromeOptions() # 創(chuàng)建一個(gè)配置對(duì)象
    options.add_argument('--user-agent=Mozilla/5.0 HAHA') # 替換User-Agent
    
    driver = webdriver.Chrome('./chromedriver', chrome_options=options)
    
    driver.get('http://www.itcast.cn')
    print(driver.title)
    driver.quit()
    

知識(shí)點(diǎn):了解 selenium替換user-agent

到了這里,關(guān)于selenium的其它使用方法的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(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)文章

  • 解決Python爬蟲(chóng)中selenium模塊中的find_element_by_id方法無(wú)法使用

    解決Python爬蟲(chóng)中selenium模塊中的find_element_by_id方法無(wú)法使用

    如有錯(cuò)誤,敬請(qǐng)諒解! 此文章僅為本人學(xué)習(xí)筆記,僅供參考,如有冒犯,請(qǐng)聯(lián)系作者刪除?。?? ? ? ? 我們?cè)趯W(xué)習(xí)selenium模塊的時(shí)候,經(jīng)常會(huì)用到?browser.find_element_by_id命令,但隨著selenuim版本更新,我們會(huì)發(fā)現(xiàn)運(yùn)行時(shí)會(huì)報(bào)錯(cuò),非??鄲馈?? ? ? ? 示例: ? ? ? ? 錯(cuò)誤如下:

    2024年02月05日
    瀏覽(28)
  • 自動(dòng)化測(cè)試工具 —— selenium介紹及基本使用方法

    自動(dòng)化測(cè)試工具 —— selenium介紹及基本使用方法

    Selenium是一個(gè)開(kāi)源、免費(fèi)、簡(jiǎn)單、靈活,對(duì)Web瀏覽器支持良好的自動(dòng)化測(cè)試工具,在UI自動(dòng)化、爬蟲(chóng)等場(chǎng)景下是十分實(shí)用的,能夠熟練掌握并使用Selenium工具可以大大的提高效率。 Selenium簡(jiǎn)介 Selenium支持多平臺(tái)、多瀏覽器、多語(yǔ)言去實(shí)現(xiàn)自動(dòng)化測(cè)試,是一個(gè)開(kāi)源和可移植的Web測(cè)

    2024年02月05日
    瀏覽(92)
  • selenium+python自動(dòng)化測(cè)試之使用webdriver操作瀏覽器的方法

    selenium+python自動(dòng)化測(cè)試之使用webdriver操作瀏覽器的方法

    WebDriver簡(jiǎn)介 selenium從2.0開(kāi)始集成了webdriver的API,提供了更簡(jiǎn)單,更簡(jiǎn)潔的編程接口。selenium webdriver的目標(biāo)是提供一個(gè)設(shè)計(jì)良好的面向?qū)ο蟮腁PI,提供了更好的支持進(jìn)行web-app測(cè)試。從這篇博客開(kāi)始,將學(xué)習(xí)使用如何使用python調(diào)用webdriver框架對(duì)瀏覽器進(jìn)行一系列的操作 打開(kāi)瀏覽

    2024年01月25日
    瀏覽(28)
  • 【selenium】自動(dòng)化測(cè)試中,元素?zé)o法點(diǎn)擊定位等問(wèn)題的解決:js的使用方法

    【selenium】自動(dòng)化測(cè)試中,元素?zé)o法點(diǎn)擊定位等問(wèn)題的解決:js的使用方法

    在自動(dòng)化測(cè)試中經(jīng)常會(huì)遇到使用selenium方法定位元素點(diǎn)擊操作失敗的情況,例如,我們想實(shí)現(xiàn)在瀏覽器輸入http://www.baidu.com,進(jìn)入百度首頁(yè)后,鼠標(biāo)懸停在“更多產(chǎn)品”上,點(diǎn)擊“全部產(chǎn)品” 若不使用js的話,代碼應(yīng)該如下圖所示: 我們執(zhí)行代碼后,發(fā)現(xiàn)會(huì)報(bào)錯(cuò) 我們?cè)撊绾谓?/p>

    2024年02月08日
    瀏覽(24)
  • 自動(dòng)化測(cè)試工具Selenium的基本使用方法,面試字節(jié)跳動(dòng)的前端工程師該怎么準(zhǔn)備

    自動(dòng)化測(cè)試工具Selenium的基本使用方法,面試字節(jié)跳動(dòng)的前端工程師該怎么準(zhǔn)備

    8.小結(jié) 上述均可以改寫(xiě)成find_element(By.ID,‘kw’)的形式 find_elements_by_xxx的形式是查找到多個(gè)元素,結(jié)果為列表 import time from selenium import webdriver#驅(qū)動(dòng)瀏覽器 from selenium.webdriver import ActionChains #滑動(dòng) from selenium.webdriver.common.by import By #選擇器 from selenium.webdriver.common.by import By #按照什

    2024年04月16日
    瀏覽(25)
  • 『App自動(dòng)化測(cè)試之Appium應(yīng)用篇』| 繼承于selenium常用的元素定位方法有哪些?如何使用?

    『App自動(dòng)化測(cè)試之Appium應(yīng)用篇』| 繼承于selenium常用的元素定位方法有哪些?如何使用?

    在了解元素等位前,我們先了解下 app 的一些類(lèi)型,只有了解這些 app 的類(lèi)型才能針對(duì)性的選擇元素定位方法; 因?yàn)椴煌?lèi)型的app的定位方式可能存在差異性; 我們了解到 APP 可以分為原生 APP 、 Web APP 、混合 APP 。 而原生 APP 是基于 Android 或 iOS 平臺(tái)官方的語(yǔ)言、類(lèi)庫(kù)、工具

    2024年02月03日
    瀏覽(23)
  • 代理ip的使用方法——Python爬蟲(chóng)

    代理ip的使用方法——Python爬蟲(chóng)

    本文內(nèi)容:代理ip使用原理,如何在自己的爬蟲(chóng)里設(shè)置代理ip,如何知道代理ip有沒(méi)有生效,沒(méi)生效的話是哪里出了問(wèn)題,個(gè)人使用的代理ip(付費(fèi))。 目錄 代理ip原理 ? ? ? 輸入網(wǎng)址后發(fā)生了什么呢? ? ? ? 代理ip做了什么呢? ? ? ? 為什么要用代理呢? ?爬蟲(chóng)代碼中使用代

    2024年02月05日
    瀏覽(22)
  • Selenium介紹及基本使用方法

    Selenium介紹及基本使用方法

    Selenium是一個(gè)開(kāi)源、免費(fèi)、簡(jiǎn)單、靈活,對(duì)Web瀏覽器支持良好的自動(dòng)化測(cè)試工具,在UI自動(dòng)化、爬蟲(chóng)等場(chǎng)景下是十分實(shí)用的,能夠熟練掌握并使用Selenium工具可以大大的提高效率。 Selenium簡(jiǎn)介 Selenium支持多平臺(tái)、多瀏覽器、多語(yǔ)言去實(shí)現(xiàn)自動(dòng)化測(cè)試,是一個(gè)開(kāi)源和可移植的Web測(cè)

    2024年02月04日
    瀏覽(22)
  • Python Selenium 的基本使用方法

    Selenium 是一個(gè)用于自動(dòng)化 web 瀏覽器的工具,它提供了一套用于測(cè)試 web 應(yīng)用程序的工具和庫(kù)。Selenium 最初是用于測(cè)試 web 應(yīng)用程序的,但它也被廣泛用于進(jìn)行網(wǎng)絡(luò)數(shù)據(jù)采集、自動(dòng)化任務(wù)和網(wǎng)頁(yè)操作等。 Selenium 支持多種編程語(yǔ)言,包括 Python、Java、JavaScript、C# 等,但最為常用的

    2024年04月28日
    瀏覽(32)
  • Python 爬蟲(chóng)使用代理 IP 的正確方法

    代理 IP 是爬蟲(chóng)中非常常用的方法,可以避免因?yàn)轭l繁請(qǐng)求而被封禁。下面是 Python 爬蟲(chóng)使用代理 IP 的正確方法: 1. 選擇可靠的代理 IP 供應(yīng)商,購(gòu)買(mǎi)或者免費(fèi)使用代理 IP 列表。 2. 在爬蟲(chóng)中使用第三方庫(kù) requests ,并在 requests.get() 或 requests.post() 請(qǐng)求時(shí)添加代理 IP 參數(shù),例如:

    2024年02月11日
    瀏覽(35)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

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

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包