天天看點

iframe src 傳參數_一篇文章高效定位iframe1、如何辨識是不是iframe2、定位iframe

今天跟大家分享的是如何高效的定位iframe。我們來看一段最早的代碼:

# coding: utf-8from selenium import webdriverfrom time import sleepdriver = webdriver.Firefox()driver.get("http://blog.hexun.com/")driver.find_element_by_id("read_btn").click()driver.maximize_window()sleep(3)driver.find_element_by_id("username").send_keys("賬号")driver.find_element_by_id("password").send_keys("密碼")driver.find_element_by_xpath(".//*[@id='login12']/div/div/div/div[3]/input").click()sleep(3)# 點選發送部落格driver.find_element_by_xpath(".//*[@id='login12']/div/div/div[3]/a[1]").click()sleep(3)curr = driver.current_window_handleall_curr = driver.window_handlesfor i in all_curr:    if i != curr:        driver.switch_to.window(i)        sleep(2)        driver.find_element_by_id("hxjy_blog_tit").send_keys(u"我的文章")        driver.switch_to.frame(driver.find_element_by_xpath(".//*[@id='editorContainer']/iframe"))        sleep(2)        driver.find_element_by_xpath("html/body").click()        driver.find_element_by_xpath("html/body").send_keys(u"童林")        driver.switch_to.default_content()        # 頁面下拉        js = "var q=document.documentElement.scrollTop=1000"        driver.execute_script(js)        driver.find_element_by_xpath(".//*[@id='hxjy_blog_label']").send_keys(u"測試")        driver.find_element_by_xpath(".//*[@id='postarticle']").click()        
           

這是一篇關于selenium的代碼,現在就拿這段代碼舉例子:

1、如何辨識是不是iframe

iframe src 傳參數_一篇文章高效定位iframe1、如何辨識是不是iframe2、定位iframe

我們用箭頭所指工具點選要檢視的元素後,在FirePath頁籤下,方框所示的位置會有"iframe.editor"或者"iframe"的提示,這時候我們就可以确定——這是一個iframe。

2、定位iframe

這個我覺得有點麻煩,不知道各位大神怎麼定位,我說一下我的思路,大家可以參考。由于一點編輯框就進入iframe,導緻我不知道怎麼定位這個iframe的位置,于是我選擇定位這個iframe上面的元素,也就是定位下圖方框那裡,然後看下面的元素,點開div标簽,在裡面找iframe,友善的是滑鼠移動到标簽上時頁面會有顯示對應的位置:

iframe src 傳參數_一篇文章高效定位iframe1、如何辨識是不是iframe2、定位iframe

上圖我們看到了iframe,然後把滑鼠放到iframe上,右鍵選擇copy xpath:

iframe src 傳參數_一篇文章高效定位iframe1、如何辨識是不是iframe2、定位iframe

這樣我們就定位到了iframe的位置。

定位到了以後,我們要轉移到iframe上,pycharm裡提示的方法是switch_to_frame(),但是這個方法已經過時了,如果你用這個方法,pycharm會劃線提醒你,最新的方法是switch_to.frame(),傳的參數就是iframe的定位也就是代碼裡黑色那句:

driver.switch_to.frame(driver.find_element_by_xpath(".//*[@id='editorContainer']/iframe"))
           

現在我們進入了iframe,接下來正常進行定位、輸入内容就可以了(看代碼)

進入了iframe以後就像進入了一個盒子,盒子裡面的東西可以找到,可是盒子外面的東西是找不到的。是以當我們操作完成,繼續定位發現下圖方框處變成Top Window時,證明這已經不是iframe,我們需要跳出盒子了

iframe src 傳參數_一篇文章高效定位iframe1、如何辨識是不是iframe2、定位iframe

一句話就能跳出來,就像有的人和你說“我已經放下了”就離開你一樣,哈哈,你也可以這麼潇灑的對不愛你的人說。

也是一句話,就是最上面代碼中的黑色斜體字:

driver.switch_to.default_content()
           

這樣就跳出iframe了。好多登入框、文章輸入框都是iframe寫的,現在對你來說應該已經不難了,大家快試試吧。

如果對接口、性能、自動化測試、面試經驗交流等感興趣的,可以關注我的頭條号,我會不定期的發放免費的資料,這些資料都是從各個技術網站搜集、整理出來的,如果你有好的學習資料可以私聊發我,我會注明出處之後分享給大家。歡迎分享,歡迎評論,歡迎轉發。需要資料的同學可以關注小編+轉發文章+私信【測試資料】

繼續閱讀