selenium筆記

參考:https://blog.csdn.net/u013250071/article/details/79133116

selenium三種等待方式

  • time.sleep(x):強(qiáng)制等待

第一種也是使用最簡(jiǎn)單的一種辦法就是強(qiáng)制等待sleep(X),強(qiáng)制讓瀏覽器等待X秒痊远,不管當(dāng)前操作是否完成萄凤,是否可以進(jìn)行下一步操作,都必須等X秒的時(shí)間坎藐。

缺點(diǎn):不能準(zhǔn)確把握需要等待的時(shí)間(有時(shí)操作還未完成遇西,等待就結(jié)束了灭衷,導(dǎo)致報(bào)錯(cuò)次慢;有時(shí)操作已經(jīng)完成了,但等待時(shí)間還沒有到,浪費(fèi)時(shí)間)迫像,如果在用例中大量使用拭抬,會(huì)浪費(fèi)不必要的等待時(shí)間,影響測(cè)試用例的執(zhí)行效率侵蒙。

優(yōu)點(diǎn):使用簡(jiǎn)單造虎,可以在調(diào)試時(shí)使用。

  • implicitly_wait(X):隱式等待

第二種方法是隱形等待纷闺,其設(shè)置了一個(gè)最長(zhǎng)等待時(shí)間算凿,如果在規(guī)定時(shí)間內(nèi)網(wǎng)頁(yè)加載完成,則執(zhí)行下一步犁功,否則一直等到時(shí)間結(jié)束氓轰,然后執(zhí)行下一步操作。

缺點(diǎn):使用隱式等待浸卦,程序會(huì)一直等待整個(gè)頁(yè)面加載完成署鸡,才會(huì)執(zhí)行下一步操作;

但有時(shí)候頁(yè)面想要的元素早已經(jīng)加載完成了限嫌,但是因?yàn)榫W(wǎng)頁(yè)上個(gè)別元素還沒有加載完成靴庆,仍要等到頁(yè)面全部完成才能執(zhí)行下一步,使用也不是很靈活怒医。

優(yōu)點(diǎn):隱性等待對(duì)整個(gè)driver的周期都起作用炉抒,所以只要設(shè)置一次即可。

  • WebDriverWait(driver, 超時(shí)時(shí)間, 調(diào)用頻率, 要忽略的異常).until(要執(zhí)行的方法, 超時(shí)時(shí)返回的錯(cuò)誤信息)

WebDriverWait(driver, 20, 0.5).until(EC.presence_of_element_located(locator))

20:最長(zhǎng)等待時(shí)間稚叹。

0.5:檢查間隔時(shí)間焰薄,每隔0.5秒檢查一次操作是否完成。

EC.presence_of_element_located(locator):判斷目標(biāo)元素是否已經(jīng)成功加載扒袖。
presence_of_element_located: 當(dāng)我們不關(guān)心元素是否可見塞茅,只關(guān)心元素是否存在在頁(yè)面中。
visibility_of_element_located: 當(dāng)我們需要找到元素季率,并且該元素也可見野瘦。

image.png

有些頁(yè)面的鏈接打開后,會(huì)重新打開一個(gè)窗口蚀同,對(duì)于這種情況缅刽,想在新頁(yè)面上操作啊掏,就得先切換窗口了蠢络。獲取窗口的唯一標(biāo)識(shí)用句柄表示,所以只需要切換句柄迟蜜,我們就能在多個(gè)頁(yè)面上靈活自如的操作了刹孔。

  • driver.current_window_handle

獲取當(dāng)前頁(yè)面的句柄

  • window_handles

獲取當(dāng)前所以的句柄

前言

在用selenium定位頁(yè)面元素的時(shí)候會(huì)遇到定位不到的問(wèn)題,明明元素就在那兒,用firebug也可以看到髓霞,就是定位不到卦睹,這種情況很有可能是frame在搞鬼

切換frame(iframe)

frame標(biāo)簽有frameset、frame方库、iframe三種结序,frameset跟其他普通標(biāo)簽沒有區(qū)別,不會(huì)影響到正常的定位纵潦,而frame與iframe對(duì)selenium定位而言是一樣的徐鹤,selenium有一組方法對(duì)frame進(jìn)行操作

  • switch_to.frame()
    切換至frame
from selenium import webdriver
driver = webdriver.Firefox()
driver.switch_to.frame(0)  # 1.用frame的index來(lái)定位,第一個(gè)是0
# driver.switch_to.frame("frame1")  # 2.用id來(lái)定位
# driver.switch_to.frame("myframe")  # 3.用name來(lái)定位
# driver.switch_to.frame(driver.find_element_by_tag_name("iframe"))  # 4.用WebElement對(duì)象來(lái)定位
  • switch_to.default_content()
    從frame中切回主文檔
driver.switch_to.default_content()
  • switch_to.parent_frame()
    嵌套frame的操作
<html>
    <iframe id="frame1">
        <iframe id="frame2" / >
    </iframe>
</html>
driver.switch_to.frame("frame1")
driver.switch_to.frame("frame2")

frame切回到父frame

driver.switch_to.parent_frame()  # 如果當(dāng)前已是主文檔邀层,則無(wú)效果

前言

頁(yè)面經(jīng)撤稻矗回切換窗口或者alert所以特此記錄一些方法

switch_to包的方法詳解
  • driver.switch_to.active_element()

等同于driver.switch_to_active_element()

解釋:定位到當(dāng)前聚焦的元素上

  • driver.switch_to.alert()

等同于 driver.switch_to_alert()

解釋:切換到alert彈窗

  • driver.switch_to.default_content()

等同于driver.switch_to_default_content()

解釋:切換到最上層頁(yè)面

  • driver.switch_to.frame(frame_reference)

等同于 driver.switch_to_frame(frame_reference)

解釋:通過(guò)id、name寥院、element(定位的某個(gè)元素)劲赠、索引來(lái)切換到某個(gè)frame

  • driver.switch_to.parent_frame()

解釋:這是switch_to中獨(dú)有的方法,可以切換到上一層的frame秸谢,對(duì)于層層嵌套的frame很有用

  • driver.switch_to.window(window_name)

等同于 driver.switch_to_window(window_name)

解釋:切換到制定的window_name頁(yè)面

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末凛澎,一起剝皮案震驚了整個(gè)濱河市库糠,隨后出現(xiàn)的幾起案子眷蜈,更是在濱河造成了極大的恐慌,老刑警劉巖攻谁,帶你破解...
    沈念sama閱讀 219,270評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件元媚,死亡現(xiàn)場(chǎng)離奇詭異轧叽,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)刊棕,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,489評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門炭晒,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人甥角,你說(shuō)我怎么就攤上這事网严。” “怎么了嗤无?”我有些...
    開封第一講書人閱讀 165,630評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵震束,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我当犯,道長(zhǎng)垢村,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,906評(píng)論 1 295
  • 正文 為了忘掉前任嚎卫,我火速辦了婚禮嘉栓,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己侵佃,他們只是感情好麻昼,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,928評(píng)論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著馋辈,像睡著了一般抚芦。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上迈螟,一...
    開封第一講書人閱讀 51,718評(píng)論 1 305
  • 那天燕垃,我揣著相機(jī)與錄音,去河邊找鬼井联。 笑死卜壕,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的烙常。 我是一名探鬼主播轴捎,決...
    沈念sama閱讀 40,442評(píng)論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼蚕脏!你這毒婦竟也來(lái)了侦副?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,345評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤驼鞭,失蹤者是張志新(化名)和其女友劉穎秦驯,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體挣棕,經(jīng)...
    沈念sama閱讀 45,802評(píng)論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡译隘,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,984評(píng)論 3 337
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了洛心。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片固耘。...
    茶點(diǎn)故事閱讀 40,117評(píng)論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖词身,靈堂內(nèi)的尸體忽然破棺而出厅目,到底是詐尸還是另有隱情,我是刑警寧澤法严,帶...
    沈念sama閱讀 35,810評(píng)論 5 346
  • 正文 年R本政府宣布损敷,位于F島的核電站,受9級(jí)特大地震影響深啤,放射性物質(zhì)發(fā)生泄漏拗馒。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,462評(píng)論 3 331
  • 文/蒙蒙 一墓塌、第九天 我趴在偏房一處隱蔽的房頂上張望瘟忱。 院中可真熱鬧,春花似錦苫幢、人聲如沸访诱。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,011評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)触菜。三九已至,卻和暖如春哀峻,著一層夾襖步出監(jiān)牢的瞬間涡相,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,139評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工剩蟀, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留催蝗,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,377評(píng)論 3 373
  • 正文 我出身青樓育特,卻偏偏與公主長(zhǎng)得像丙号,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子缰冤,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,060評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容