selenium.切换iframe

切换frame的方法

(配合HTML代码食用)

API 注释
.switch_to.frame(0) 用frame的index来定位,第一个是0
.switch_to.frame("baidu") 用id来定位
.switch_to.frame("百度") 用name来定位
.switch_to.frame(.find_element_by_tag_name("百度")) 用WebElement对象来定位
.switch_to.frame(.find_element_by_xpath("//iframe[contains(@id,'baidu')]")) 用xpath定位,传入WebElement对象
.switch_to.frame('baidu) frame一层一层的切入
.switch_to.parent_frame() iframe退后操作,一层一层的退回
.switch_to.default_content() 切换到主页面

用来练习的HTML代码:

<!DOCTYPE html>
<html lang="en">
<head>
        <meta charset="UTF-8">
        <title>Title</title>
</head>
<body>
<iframe id= "baidu" name="百度" src="http://www.BAIDU.com" HEIGHT="300" WIDTH="1280"></iframe>
<iframe id= "sougou" name="搜狗" src="https://www.sogou.com/" HEIGHT="300" WIDTH="1280"></iframe>
</body>
</html>

练习步骤如下:

  1. 进入百度进行搜索
  2. 退回主页
  3. 进入搜狗进行搜索
  4. 后退一层frame
  5. 进入百度清空搜索框
点击查看代码

from selenium import webdriver
from time import sleep

url = "file:///C:/Users/BIN/Desktop/fra.html"
browser = webdriver.Chrome()
browser.get(url)
browser.implicitly_wait(5)

进入百度进行搜索

browser.switch_to.frame("baidu")
browser.find_element_by_xpath("//*[@id='kw']").send_keys("selenium")

退回主页

browser.switch_to.default_content()

进入搜狗进行搜索

sleep(1)
browser.switch_to.frame(1)
browser.find_element_by_xpath("//[@id='query']").send_keys("iframe")
browser.find_element_by_xpath("//
[@id='stb']").click()

后退一层frame

这里退回只能退到主页,比如后退两次到之前的ifarme界面则不可以实现

sleep(1)
browser.switch_to.parent_frame()

browser.switch_to.parent_frame()

sleep(1)

进入百度清空搜索框

browser.switch_to.frame("百度")
browser.find_element_by_xpath("//*[@id='kw']").clear()

sleep(1)
browser.quit()

原文地址:https://www.cnblogs.com/youngleesin/p/11360094.html