selenium 多表单切换
frame/iframe表单嵌套页面的应用。WebDrivr只能在一个页面上对元素识别与定位,对于在frame/iframe表单内嵌页面上的元素无法直接定位。这时需要使用 switch_to.frame()方法将当前定位的主题切换为frame/iframe表单内嵌页面中。
<html> <body> ... <iframe id="x-URS-iframe" ...> <html> <body> ... <input name="email" >
对于一些登录框的操作,必须先切换到iframe表单
from selenium import webdriver driver = webdriver.Chrome() driver.get("http://www.126.com") driver.switch_to.frame('x-URS-iframe') driver.find_element_by_name("email").clear() driver.find_element_by_name("email").send_keys("username") driver.find_element_by_name("password").clear() driver.find_element_by_name("password").send_keys("password") driver.find_element_by_id("dologin").click() driver.switch_to.default_content() driver.quit()
switch_to.frame() 默认可直接取表单的id或 name 属性。如果没有可用的id或name属性,则可以通过下面的方式进行定位:
#先通过xpath定位到frame i=driver.find_element_by_tag_name("iframe") driver.switch_to_frame(i) #再将定位对象传给switch_to.frame()方法 driver.switch_to.parent_frame()
跳回最外层页面:switch_to.default_content()