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

Selenium中操作iframe,別再說你不會了

這篇具有很好參考價值的文章主要介紹了Selenium中操作iframe,別再說你不會了。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

  • ??專注于分享軟件測試干貨內(nèi)容,歡迎點贊 ?? 收藏 ?留言 ?? 如有錯誤敬請指正!
  • ??交流討論:歡迎加入我們一起學習!
  • ??資源分享:耗時200+小時精選的「軟件測試」資料包
  • ?? 軟件測試學習教程推薦:火遍全網(wǎng)的《軟件測試》教程

Selenium中操作iframe,別再說你不會了,selenium,壓力測試,python,單元測試,jmeter,測試工具,開發(fā)語言


這里是清安,本章一起來了解一下ifame標簽,iframe多用于嵌套頁面。最常見的就是登錄窗口了。例如QQ空間,知乎的登錄界面,都有用到。本章主要以QQ空間為例,一起來看看:


Selenium中操作iframe,別再說你不會了,selenium,壓力測試,python,單元測試,jmeter,測試工具,開發(fā)語言

進入Url:https://i.qq.com/。

方法一:按下F12,鼠標點擊登錄框,審查元素,就能看到iframe框了。

方法二:按下F12,CTRL+F,在搜索框中輸入iframe,也能搜索到。

簡單的小腳本
好了, 此處看了iframe標簽了。我們?nèi)绾蝸矶ㄎ荒?。上述圖片中有id,有name屬性,所以我們正常進行定位切換就好了。
?

from selenium import webdriver
 
fox = webdriver.Firefox()
fox.get("https://i.qq.com/")
# 定位標簽
ifranme = fox.find_element_by_id('login_frame')
# 切換到標簽上
fox.switch_to.frame(ifranme)
fox.find_element_by_id('switcher_plogin').click()
fox.find_element_by_id('u').send_keys('清安無別事')
fox.find_element_by_id('p').send_keys('歡迎入坑')
 
fox.quit()

?

此處是一個小例子,我們使用switch_to.frame()可以切入到標簽內(nèi)部,然后進行各種操作。實際上可能會遇見沒有任何屬性的iframe,所以這時候就要考慮到標簽定位了。這里回到了元素定位基礎(chǔ)了,就不作多的闡述了。

往后還可能遇到一個HTML中存在多個iframe標簽的情況,善于結(jié)合Python,Selenium基礎(chǔ)來書寫代碼。原理都是一樣的。

封裝iframe講解
那么切入進去之后如何切出呢,或者還有其他的辦法切入嗎。答案是有的??捶庋b好的一個小例子。這里就不解釋如何封裝的了,可以直接看看Python系列,有講。
?

# -->>>清安<<<---
from selenium import webdriver
from selenium.webdriver.common.by import By
from time import sleep
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.support.wait import WebDriverWait



class Test(object):
    def __init__(self):
        self.fox = webdriver.Firefox()
        self.fox.get('https://i.qq.com/')

    def get_element(self, ele, local):
        return self.fox.find_element(ele, local)

    def click_(self, ele, local):
        self.get_element(ele, local).click()

    def get_text(self, *local):
        sleep(1)
        txt = self.get_element(*local)
        print(txt.text)

    def frame_(self, ele, local):
        """
        :return: 切入frame
        """
        sleep(1)
        self.fox.switch_to.frame(self.get_element(ele, local))

    def parent_frame(self):
        """
        :return: 切出frame
        """
        sleep(1)
        # self.fox.switch_to.default_content()
        self.fox.switch_to.parent_frame()

    def wait_(self):
        """
        :return: 顯示等待頭部 
        """
        return WebDriverWait(self.fox, 10, 0.5)

    def wait_frame(self, ele, local):
        """
        :return: 顯示等待+iframe標簽的使用
        """
        self.wait_().until(EC.frame_to_be_available_and_switch_to_it(self.get_element(ele, local)),
                           message='iframe不可跳轉(zhuǎn)')


if __name__ == '__main__':
    t = Test()  # 實例化類,直接打開url
    t.frame_(By.ID, 'login_frame')  # 定位iframe標簽
    t.get_text(By.ID, 'switcher_plogin')    # 獲取文本信息
    t.click_(By.ID, 'switcher_plogin')  # 點擊操作
    t.get_text(By.ID, 'login_button')   # 獲取文本信息
    t.parent_frame()    # 切出iframe
    t.get_text(By.XPATH, "http://*[text()='空間活動']")  # 獲取文本信息
    t.wait_frame(By.ID, 'login_frame')  # 用iframe顯示等待
    t.get_text(By.XPATH, '//*[text()="新用戶注冊"]')     # 獲取文本信息

此處舉例了如何切出iframe,也就是parent_frame方法,里面介紹了兩種方法。

self.fox.switch_to.parent_frame()是切換到父級,如果沒有父級的iframe,那么保持默認,也就是說將焦點切出原iframe標簽。

self.fox.switch_to.default_content()會直接將焦點切出iframe標簽。
切出后我們就可以做其他的操作了。上述代碼中,我們定位了“空間活動”,并打印了它的文本值。

上述代碼中我們還用到了一個顯示等待,也是有關(guān)iframe標簽的,這也是一種切換方式。一起來看看源碼:

class frame_to_be_available_and_switch_to_it(object):
    """ An expectation for checking whether the given frame is available to
    switch to.  If the frame is available it switches the given driver to the
    specified frame.
    """
    def __init__(self, locator):
        self.frame_locator = locator

    def __call__(self, driver):
        try:
            if isinstance(self.frame_locator, tuple):
                driver.switch_to.frame(_find_element(driver,
                                                     self.frame_locator))
            else:
                driver.switch_to.frame(self.frame_locator)
            return True
        except NoSuchFrameException:
            return False

?看源碼中,簡單點理解:如果self.frame_locator是元組,則進行切換,否則,還是切換,并返回True。都不對,則告訴你錯誤,返回False。所以啊,用了這個顯示等待也就不需要另外寫iframe標簽切換了。也能不加強制等待、擔心時間不夠元素沒渲染出來,導致腳本報錯了。

總結(jié)

1、上述的封裝中,并未用到較多的顯示等待,而是簡單的使用了強制等待,這是不值得提倡的。

2、封裝的套路可以模仿,自己寫一寫。

3、大家記得寫好注釋

4、上述代碼中,切換iframe還有很大的優(yōu)化空間,可以自己試試如何優(yōu)化


最后我邀請你進入我們的軟件測試學習交流群:785128166, 大家可以一起探討交流軟件測試,共同學習軟件測試技術(shù)、面試等軟件測試方方面面,還會有免費直播課,收獲更多測試技巧,我們一起進階Python自動化測試/測試開發(fā),走向高薪之路

感謝每一個認真閱讀我文章的人,看著粉絲一路的上漲和關(guān)注,禮尚往來總是要有的,雖然不是什么很值錢的東西,如果你用得到的話可以直接拿走:

Selenium中操作iframe,別再說你不會了,selenium,壓力測試,python,單元測試,jmeter,測試工具,開發(fā)語言?

這些資料,對于從事【軟件測試】的朋友來說應(yīng)該是最全面最完整的備戰(zhàn)倉庫,這個倉庫也陪伴我走過了最艱難的路程,希望也能幫助到你!

Selenium中操作iframe,別再說你不會了,selenium,壓力測試,python,單元測試,jmeter,測試工具,開發(fā)語言文章來源地址http://www.zghlxwxcb.cn/news/detail-773773.html

到了這里,關(guān)于Selenium中操作iframe,別再說你不會了的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

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

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

相關(guān)文章

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

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

    iframe識別: 語法: driver.switch_to.frame(‘方式’) 1、常見處理方法三種 index:下標 name:id或name屬性的值 webelement:元素 2、通過下標進入 進入第一個iframe: 3、通過id或name屬性的值進入 通過id或name屬性的值進入指定的iframe: 4、通過iframe元素進入iframe 通過iframe元素進入指定i

    2024年02月04日
    瀏覽(95)
  • Python爬蟲(7)selenium3種彈窗定位后點擊操作,解決點擊登錄被隱藏iframe無法點擊的登陸問題

    Python爬蟲(7)selenium3種彈窗定位后點擊操作,解決點擊登錄被隱藏iframe無法點擊的登陸問題

    之前的文章有關(guān)于更多操作方式詳細解答,本篇基于前面的知識點進行操作,如果不了解可以先看之前的文章 Python爬蟲(1)一次性搞定Selenium(新版)8種find_element元素定位方式 Python爬蟲(2)-Selenium控制瀏覽器 Python爬蟲(3)-Selenium結(jié)合pywin32模擬鍵盤操作 Python爬蟲(4)-Seleni

    2024年02月04日
    瀏覽(20)
  • Selenium+Pytest自動化測試框架實戰(zhàn),還不會點這里一清二楚,全網(wǎng)最細教程!

    Selenium+Pytest自動化測試框架實戰(zhàn),還不會點這里一清二楚,全網(wǎng)最細教程!

    在華為工作了10年的大佬出的Web自動化測試教程,華為現(xiàn)用技術(shù)教程!_嗶哩嗶哩_bilibili 在華為工作了10年的大佬出的Web自動化測試教程,華為現(xiàn)用技術(shù)教程!共計16條視頻,包括:1. 【web自動化】主流Web自動化測試技術(shù)對比、2. 【web自動化】Selenium自動化測試環(huán)境一鍵搭建、

    2024年02月02日
    瀏覽(27)
  • selenium iframe框架處理

    selenium iframe框架處理

    對于子嵌套的頁面,我們直接標簽定位會報錯,如下面代碼 所以我們要切換作用域,根據(jù)iframe標簽的id轉(zhuǎn)入iframe框架,再進行后續(xù)操作。 操作完成后返回主框架 源碼語法請看下圖? 我們來模擬登錄進行簡單案例加以鞏固,比如qq空間登錄界面。 現(xiàn)在一般來說,進入qq空間官網(wǎng)

    2024年02月04日
    瀏覽(16)
  • selenium+python處理iframe切換

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

    2024年02月11日
    瀏覽(16)
  • selenium中,切換iframe的方法

    最近在學基于python+selenium的web自動化,在此記錄下學習的東西,也希望可以跟學習這技能的小伙伴們分享、交流。 iframe也稱作嵌入式框架,嵌入式框架和框架網(wǎng)頁類似,它可以把一個網(wǎng)頁的框架和內(nèi)容嵌入在現(xiàn)有的網(wǎng)頁中。在selenium進行定位時,如果需要定位某個iframe內(nèi)的元

    2024年02月16日
    瀏覽(19)
  • 【測試】Selenium操作Cookie

    【測試】Selenium操作Cookie

    1.操作Cookie 操作Cookie無非就是讀取和刪除Cookie,下面這些是主要方法 2.設(shè)置單個Cookie 通過add_cookie()方法添加Cookie,參數(shù)是一個字典,一個Cookie字典的鍵有name、value、domain、httpOnly、path、sameSite、secure等,但是至少,必須要有name和value這兩個鍵,比如說我們設(shè)置一下百度的Coo

    2024年02月12日
    瀏覽(16)
  • Java測試——selenium常見操作

    Java測試——selenium常見操作

    selenium的前置準備工作可以參考我之前的博客:Java測試——selenium的安裝與使用教程 這篇博客講解一下selenium的常見操作 先創(chuàng)建driver 輸入網(wǎng)址 我們可以通過下面這個方法查找頁面的一個元素 該方法返回一個WebElement元素 例如,我們查找百度的搜索框 也可以通過下面這個方法

    2024年01月25日
    瀏覽(17)
  • selenium-java中切換iframe

    selenium-java中切換iframe

    1、當iframe中有固定的name或者id時可以通過name和id進行切換,代碼如下 2、當iframe中沒有固定的name或者id時可以通過iframe角標進行切換,在瀏覽器通過ctrl+f快捷鍵,搜索標簽框輸入//iframe;來查看當前iframe是第幾個來定位,代碼如下 注意:通過下標來定位時需要是同級別的,如果

    2024年01月18日
    瀏覽(23)
  • selenium多窗口、多iframe切換、alert切換

    selenium多窗口、多iframe切換、alert切換

    場景: 在頁面操作過程中有時候點擊某個鏈接會彈出新的窗口,這時就需要切換到新打開的窗口上進行操作。這種情況下,需要識別多標簽或窗口的情況。 操作方法: switch_to.window()方法:切換窗口。可以實現(xiàn)在不同的窗口之間切換。current_window_handle:獲得當前窗口句柄。

    2024年02月07日
    瀏覽(20)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包