python selenium iframe怎么定位_python+selenium四:iframe查看、定位、切换

本文介绍了如何在Python中使用Selenium进行iframe的查看、定位和切换,详细讲解了通过id、name、tag_name和索引来定位iframe,以及在iframe间和嵌套iframe中的切换方法。示例代码以126邮箱登录页面为实战场景。
摘要由CSDN通过智能技术生成

iframe是HTML里面嵌套HTML的一种框架

7eafb5cd05731fd486c64b25d4dfaca2.png

1.查看iframe

1.Top Window:可直接定位

01f6c828800261c21bf852a262d2973d.png

2.iframe#i:说明此元素在iframe上

7e1913220766c26d4dfd71e250ef85ba.png

3.iframe显示为空:(id或name为空)

d4dd45eac4f17f955df6fa6a3841eaae.png

4.右边这个看到是空的(2层iframe)

64f975d2c379c526f0795e3a62d50e8f.png

以126邮箱为例

08e39f9c744f3d886b5c6249b750da43.png

from selenium import webdriver

driver = webdriver.Firefox()

url = "http://mail.126.com/"

driver.get(url)

# 此时使用class定位会报错,因为此时class并不是唯一的,可以用name

driver.find_element_by_name("email").send_keys("adb")

f6d8ef50f9d2f1552985ea1c7c55aa56.png

# 这里用到implicitly_wait(),它的作用是全局的,也就是只用一次就可以了,只在find_element时候起作用

driver.implicitly_wait(10)

0071a80c509ad48468fce23a6d928f1d.png

# 切换iframe,此处id="x-URS-iframe"

driver.switch_to_frame("x-URS-iframe")

# driver.switch_to.frame("x-URS-iframe") # 与上一行代码一样

763d647c0b10bf6f9a7a0b0ecea7d894.png

# 切换到iframe后再定位到此iframe下的name元素

driver.find_element_by_name("email").send_keys("adb")

driver.find_element_by_name("password").send_keys("123")

driver.find_element_by_id("dologin").click()

8e5ed0c77d366638e002be787d4b71be.png

2、定位iframe

# 1.有id,并且唯一,直接写id

driver.switch_to_frame("x-URS-iframe")

driver.switch_to.frame("x-URS-iframe")

ee819f91a73bed5751d59b98e081571c.png

# 2.有name,并且唯一,直接写name

driver.switch_to_frame("xxxx")

driver.switch_to.frame("xxxx")

60265821eca41c71c2c0960dd0c06c1d.png

# 3.无id,无name,先定位iframe元素

iframe = driver.find_elements_by_tag_name("iframe")[0]

driver.switch_to_frame(iframe)

driver.switch_to.frame(iframe)

4767d0629bc164600881ff5822b2fad6.png

42e5f9eda79c933fe5a5dde9b1cf398a.png

# 4.通过index索引定位,(从0开始)

driver.switch_to_frame(1) # 第二个

c18ec1b8d202b8b825e36d8667011066.png

# 使用iframe定位后需退出iframe

# 退出iframe,再操作

driver.switch_to_default_content() # 回到主页面

driver.switch_to.default_content()

dcc3be5ae52f6763b37e2f1edcdd578f.png

3、多个iframe的切换问题

# 如:有两个iframe:f1、f2

# 1.定位到f1

driver.switch_to_frame("f1")

# 2.操作元素

# ······

# 3.退出iframe

driver.switch_to_default_content()

# 4.定位到f2

driver.switch_to_frame("f2")

# ······

嵌套:f1中嵌套着f2

driver.switch_to_frame("f1")

driver.switch_to_frame("f2")

# 操作元素

退出iframe:

# 第一种方式:跳出所有iframe,回到主界面

driver.switch_to_default_content()

# 第二种方式:回到f1(返回上一级)

driver.switch_to.parent_frame()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值