提示:常用的frame表单有两种:frame、iframe。
1、切换的原因:当前主目录内没有iframe表单页面元素信息,不切换,找不到元素。
2、切换的方法:driver.switch_to.frame("id\name\element")
3、切换回主目录原因:iframe或frame只有在主目录才有相关元素信息,不回到主目录,切换语句会报错。
4、回到主目录方法:driver.switch_to.default_content()
5、提示:切换frame时,可以使用name、id、iframe元素
网页代码如下:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title></title>
</head>
<body>
<form action="" style="height: 700px;">
账号:<input id="user" type="text" /><br />
密码:<input id="pass" type="text"/><br />
<input type="button" value="登录" />
</form>
<iframe src="index1.html" name="iframe1" width="500px"></iframe>
<iframe src="index2.html" name="iframe2" width="500px"></iframe>
</body>
</html>
切换frame表单案例:
from selenium import webdriver
from time import sleep
#获取浏览器对象
driver=webdriver.Firefox()
#driver.maximize_window()
driver.implicitly_wait(10)
#设置网络链接
url="http://127.0.0.1:8020/test/index.html?__hbt=1573653016890"
driver.get(url)
"""
目标:切换frame表单
需求:(主页面包含index1和index2)
打开主(默认)登录页面index.html,填写账号和密码
再填写index1.html中的信息
最后填写index2.html中的信息
"""
#主页面信息填入
driver.find_element_by_css_selector("#user").send_keys("user")
driver.find_element_by_css_selector("#pass").send_keys("pass")
sleep(1)
#滚动到页面底部
js="window.scrollTo(0,10000)"
driver.execute_script(js)
#切换到index1
driver.switch_to.frame("iframe1")
driver.find_element_by_css_selector("#user1").send_keys("user1")
driver.find_element_by_css_selector("#pass1").send_keys("pass1")
#切换到主界面(index1页面没有index2的inframe),从主界面切换到index2
driver.switch_to.default_content()
driver.switch_to.frame("iframe2")
#index2信息填入
driver.find_element_by_css_selector("#user2").send_keys("user2")
driver.find_element_by_css_selector("#pass2").send_keys("pass2")
sleep(2)
driver.quit()
实现效果: