八、Selenium常用方法:Frame操作

Frame有Frame set、Frame、iFrame三种。Frameset可以直接按照正常元素定位。Frame和iFrame定位方法相同,需要把驱动切换到Frame内再进行操作。
示例:在QQ邮箱中输入用户名

iframe示例

用户名和登陆密码都嵌套在iframe标签内,所以再操作iframe中的元素时,需要先进行驱动的切换。当驱动切换到Frame内部后,只能对Frame内部对元素进行操作。如果需要对Frame之外的元素进行操作,则需要返回原有驱动。

驱动切换方法 说明
driver.switch_to.frame(reference) 方式1:切换到frame模式(嵌套Frame时,需要一级一级向下切换)
driver.switch_to.frame(0) 方式2:用frame的index来定位,第一个是0
driver.switch_to.frame(driver.find_element_by_id("login_frame")) 方式3:通过WebElement对象模式,通过find_element等方法获取元素对象
switch_to.parent_frame() 嵌套Frame:切换到父级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")

# 驱动切换到Frame(三种方式)
#由于登陆位于第二个frame,所以此处应该是1
driver.switch_to.frame(1)
driver.switch_to.frame("login_frame")
driver.switch_to.frame(driver.find_element_by_id("login_frame"))
# 通过id属性
driver.find_element_by_id("u").send_keys("[email protected]")
# 通过name属性
driver.find_element_by_name("p").send_keys("123456789")

time.sleep(2)
driver.quit()

Selenium 3+Python 3 自动化测试项目实战 从菜鸟到高手 田春成 李靖 /著

你可能感兴趣的:(八、Selenium常用方法:Frame操作)