Frame有Frame set巍杈、Frame、iFrame三種扛伍。Frameset可以直接按照正常元素定位筷畦。Frame和iFrame定位方法相同,需要把驅(qū)動(dòng)切換到Frame內(nèi)再進(jìn)行操作刺洒。
示例:在QQ郵箱中輸入用戶(hù)名
iframe示例
用戶(hù)名和登陸密碼都嵌套在iframe標(biāo)簽內(nèi)鳖宾,所以再操作iframe中的元素時(shí),需要先進(jìn)行驅(qū)動(dòng)的切換逆航。當(dāng)驅(qū)動(dòng)切換到Frame內(nèi)部后鼎文,只能對(duì)Frame內(nèi)部對(duì)元素進(jìn)行操作。如果需要對(duì)Frame之外的元素進(jìn)行操作因俐,則需要返回原有驅(qū)動(dòng)拇惋。
驅(qū)動(dòng)切換方法 | 說(shuō)明 |
---|---|
driver.switch_to.frame(reference) | 方式1:切換到frame模式(嵌套Frame時(shí)周偎,需要一級(jí)一級(jí)向下切換) |
driver.switch_to.frame(0) | 方式2:用frame的index來(lái)定位,第一個(gè)是0 |
driver.switch_to.frame(driver.find_element_by_id("login_frame")) | 方式3:通過(guò)WebElement對(duì)象模式蚤假,通過(guò)find_element等方法獲取元素對(duì)象 |
switch_to.parent_frame() | 嵌套Frame:切換到父級(jí)Frame(向上切換栏饮、回退) |
driver.switch_to_default_content() | 切換到原有模式 |
import time
from selenium import webdriver
driver = webdriver.Chrome()
driver.maximize_window()
driver.get("https://mail.qq.com/cgi-bin/loginpage")
# 驅(qū)動(dòng)切換到Frame(三種方式)
#由于登陸位于第二個(gè)frame,所以此處應(yīng)該是1
driver.switch_to.frame(1)
driver.switch_to.frame("login_frame")
driver.switch_to.frame(driver.find_element_by_id("login_frame"))
# 通過(guò)id屬性
driver.find_element_by_id("u").send_keys("961370624@qq.com")
# 通過(guò)name屬性
driver.find_element_by_name("p").send_keys("123456789")
time.sleep(2)
driver.quit()
Selenium 3+Python 3 自動(dòng)化測(cè)試項(xiàng)目實(shí)戰(zhàn) 從菜鳥(niǎo)到高手 田春成 李靖 /著