定位不到iframe元素,selenium实现切换到iframe以及切换回主档的方法

前言:最近想实现使用selenium去自动操作滑块验证码,但是滑块验证加在了iframe中,一开始定位半天报错,最后才了解是元素在iframe中,要切换才行

一、从主档切换到iframe的方法
写代码的时候,会发现提示输入这个switch_to_frame(),但是选择之后会出现switch_to_frame 的时候,就说嘛这个方法以及out了,这个时候使用switch_to.frame()就可以了

# 使用id定位,当iframe的id为iframe_id的时候
driver.switch_to.frame('iframe_id')

# 使用WebElement定位(各种定位方式都行,没有限制必须id)
iframe = driver.find_element_by_id("iframe_id")
driver.switch_to.frame(iframe)

这个时候再定位iframe上的元素就可以定位到了

二、从iframe切换到主档
当我们切换到iframe定位完成之后,再定位主档的元素就定位不到了,这个时候就要切换到主档,我们加上代码的一行代码就行了

# 从iframe切换到主档
driver.switch_to.default_content()

三、上面的两种方法我都实践过,下面的算是延伸
iframe嵌套的时候,如下

 <iframe id="iframe1">
 	<iframe id="iframe2">iframe>
 iframe>

1.我们可以一步步的切换到frame2

# 切换到一级iframe
driver.switch_to.frame("iframe1")
# 切换到二级iframe
driver.switch_to.frame("iframe2")

2.如果想从二级回到一级,也就是回到父级,可以使用下面的代码

driver.switch_to.parent_frame()

如果上级是主档,则不生效

总结:第三条我没有实操过,但是应该是正确的,大伙可以试试

你可能感兴趣的:(测试,selenium,selenium,前端)