您好,欢迎访问本站博客! 登录 后台管理
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏吧
  • 七兮网络的资源,如有侵权请联系站长七兮删除!

(十一)多表单切换

测试开发 七兮 2019-11-18 604 次浏览 0个评论
0

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

<html>
  <body>
    ...    <iframe id="x-URS-iframe" ...>
      <html>
         <body>
           ...           <input name="email" >

126邮箱登录框的结构大概是这样子的,想要操作登录框必须要先切换到iframe表单。

import time

from selenium import webdriver

driver = webdriver.Chrome(executable_path="C:\Program Files (x86)\Google\Chrome\Application\chromedriver")
driver.get("http://www.126.com")

driver.find_element_by_id("switchAccountLogin").click()
driver.switch_to.frame(0)
# driver.switch_to.frame('x-URS-iframe') #Firefox用这个方法
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(3)
driver.quit()

使用xpath路径定位,每次获取元素都失败,最后网上查了下发现其嵌套在表单frame/iframe中,所以我们先要进入frame/iframe中,然后再定位


frame/iframe的定位方式有3种,一是通过id;二是通过name;三是xpath


例:switch_to_frame(id)  ; 或是  switch_to_frame(name);

若frame没有id和name,只能是通过xpath方式定位到frame,switch_to_frame(xpath)


 以上可以解决Firefox的问题,但是在Chrome上却找不到frame


Chrome解决办法:


driver.switch_to.frame("x-URS-iframe")这个括号内可以写入frame的序号,如有多个frame,最外层的为0,里面为1,以此类推。

所以  driver.switch_to.frame(0),这样就可以了。

本文来自 七兮网络 转载请注明;

本文地址:http://qxhut.cn/?id=115。

已有 604 位网友参与,快来吐槽:

发表评论

验证码

本站会员尊享VIP特权,现在就加入我们吧!登录注册
登录
用户名
密码
注册
用户名
密码
确认密码
邮箱
验证码
找回密码
用户名
邮箱
※ 重置链接将发送到邮箱
请先 登录 再评论,若不是会员请先 注册