Selenium-Webdriver系列Python版教程(5)————如何定位 frame

來源:互聯網
上載者:User

標籤:

在 web ui 自動化測試中,frame 一直是令人頭痛的問題,就像上班必須擠公車坐地鐵一般,

frame 的問題總是令人氣悶糾結為之黯然神傷。

以前在使用 Selenium1 的時候,frame 也是頗為棘手的一個問題。不但要照本宣科的進行

一系列的設定,而且在進行實際代碼編寫的過程中會遇到各種奇奇怪怪的問題。 frame 就像

中國男足的後防線,問題多多難以解決。

selenium webdriver 處理 frame 比較簡單,這點比某些測試載入器要先進一些,令人身心愉

悅。

以下面的 html 代碼為例,我們看一下如何定位 frame 上的元素。

frame.html

<html>

<head>
<title>frame</title>

</head>

<body>

<div class="row-fluid">
<div class="span10 well">
<h3>frame</h3>
<iframe id="f1" src=" part1 .html" width="800",
height="600"></iframe>
</div>
</div>
</body>

</html>


part1.htm

<html>

<head>
<title>inner</title>

</head>

<body>

<div class="row-fluid">
<div class="span6 well">
<h3>inner</h3>
<iframe id="f2" src="http://www.baidu.com" width="700"
height="500"></iframe>
</div>
</div>
</body>

</html>


switch_to 方法會 new1個 TargetLocator 對象,使用該對象的 frame 方法可以將當前識別

的”主體”移動到需要定位的 frame 上去。

from selenium import webdriver

import os,time

objDriver = webdriver.Chrome ()

#相對路徑(與Python檔案在同一個目錄下)

frame_file = ‘file://"+ os.getcwd()  + ‘/frame.html‘))

objDriver.get(file_path)

objDriver.implicitly_wait(30)

#先找到到ifrome1(id = f1)

objDriver.switch_to_frame("f1")

#再找到其下面的ifrome2(id =f2)

objDriver.switch_to_frame("f2")

#操作f2中的控制項

objDriver.find_element_by_id("kw").send_keys("selenium")

time.sleep(5)

objDriver.quit()

webdriver 的 frame 處理方式讓人感覺那個不痛越來越輕鬆,這點進步值得肯定。

備忘:

browser.implicitly_wait()的用法應該比time.sleep() 更智能,後者只能選擇一個固定的時間的等待,前者可以在一個時間範圍內智能的等待。

 

driver.switch_to_window()的用法與switch_to_frame 相同,只是switch_to_window()不是對嵌套的架構定位,而是視窗的定位。


Selenium-Webdriver系列Python版教程(5)————如何定位 frame

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.