自动化测试—多表单切换

在Web应用中经常会遇到frame/iframe表单嵌套页面的应用,WebDriver只能在一个页面上对元素识别与定位,对于frame/iframe表单内嵌页面上的元素无法直接定位,这时就需要通过switch_to_frame()方法将当前定位的主体切换为frame/iframe表单的内嵌页面中。

我们拿126邮箱账号登录为例,打开查看元素,然后打开点击查看页面中的元素,鼠标移至到邮箱账号输入框后可以看到iframe。这说明邮箱账号和密码登录是内嵌到该页面中的,直接通过WebDriver方法是不会定位到该元素的,这时候如果直接定位的话一定会报:找不到元素,因此这是我们可以使用switch_to_frame()先找到页面元素中的<iframe>标签,然后再定位到邮箱账号输入框。

from selenium import webdriver
from time import sleep

driver = webdriver.Firefox()
driver.get('https://mail.126.com/')
sleep(5)
#driver.find_element_by_xpath(".//*[@id='switchAccountLogin']").click()
driver.find_element_by_id('switchAccountLogin').click()
sleep(3)
driver.switch_to_frame('x-URS-iframe1585466978439.523').send_keys('sl01224318')                                driver.quit()

switch_to_frame()默认可以直接取表单的id和name属性。如果iframe没有可用的id和name属性,则可以通过下面的方式进行定位:

#通过使用xpath等元素定位方法定位到ifame
#frame = driver.find_element_by_xpath('ifame位置')
#driver.switch_to_frame(frame)

#通过索引位置来定位iframe
#driver.switch_to_frame(0) #比如共搜索到3个iframe,你想要的在第一个,那就是索引0。

以上是对switch_to_frame的简单介绍,希望能对大家有一丝丝的帮助!

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章