学习Selenium元素定位--多表单切换
在Web应用中经常会遇到frame/iframe表单嵌套页面的应用,WebDriver只能在一个页面上对元素识别与定位,对于frame/iframe表单内嵌页面上的元素无法直接定位。这时就需要通过switch_to.frame()方法将当前定位的主体切换为frame/iframe表单的内嵌页面中。
#!/usr/bin/env/ python # coding:utf-8 # Date:2019/1/10 from selenium import webdriver import time #打开浏览器-Chrome driver = webdriver.Chrome() #进入网页 driver.get('https://mail.126.com') #等待10s time.sleep(10) # driver.switch_to.frame('x-URS-iframe') # xf = driver.find_element_by_xpath('//*[@id="x-URS-iframe\*"]') # driver.switch_to.frame(xf) #定位iframe元素 xf = driver.find_element_by_tag_name("iframe") driver.switch_to.frame(xf) #清空email栏位 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() time.sleep(5) driver.quit()
由于无法直接使用 driver.switch_to.frame('x-URS-iframe') 进行定位iframe表单,使用xpath也无法定位iframe元素,所以最终参照使用了find_element_by_tag_name
进行定位。