Selenium 新手请教,selenium+python 关于 QQ 邮箱富文本框定位的问题

foxlix · 2017年06月27日 · 最后由 arkin 回复于 2017年06月29日 · 2403 次阅读

最近才开始学习 selenium+python,遇到一个问题,就是关于 QQ 邮箱富文本定位,通过百度后尝试了几种方法,都没办法定位到这个富文本(请看我的截图![],请各位大神帮帮我,教教我如何能够定位到,最好能够附上你的代码内容,万分感谢!!!

共收到 11 条回复 时间 点赞

切换 iframe

落辰曦 回复

我试了,但它的 iframe 没有明确的元素,不知道应该定位哪个,ID 和 name 都是动态的,而使用 class 又没用

我看了下,QQ 邮箱的文本区域 iframe 的 id、name 动态值; 这种情况先定位 iframe,再切换

  1. 先使用 xpath 定位 iframe 位置,赋值给变量; 例:text=driver.find_element_by_xpath("//*[@id='QMEditorArea ']/table/tbody/tr[2]/td/iframe")
  2. 再使用 switch_to_frame() 函数例: driver.switch_to_frame(text)
  3. 退出 iframe,driver.switch_to_default_content()
foxlix 回复

没法直接定位 iframe,可以先定位父元素.....
其次,xpath 当然是最直观的。

arkin 回复

谢谢你提供的方法,按照你的方法,虽然没报错,但是不确定是否定位到富文本区域,所以想在富文本区域输入内容,遗憾技术有限,一直无法成功。。。

foxlix 回复

不好意思,我没有写脚本执行,QQ 邮箱应该是多层 iframe ;

稍等,我实际操作下

arkin 回复

非常感谢,如果能够成功最好能提供下这部分的代码,第一次接触到富文本输入框,所以感觉无所适从。。。

foxlix 回复

不好意思,刚去开会;
经过验证,右侧区域存在两个 iframe,需要一层一层切换;我给你贴出代码

foxlix 回复

实际脚本:

# 左侧菜单栏 - 点击 ‘写信’
driver.find_element_by_id("composebtn").click()
time.sleep(2)
# 切换至右侧 主 iframe
driver.switch_to.frame("mainFrame")
driver.find_element_by_id("toAreaCtrl").send_keys()
# 定位 ‘正文’iframe 位置
main_body= driver.find_element_by_xpath("//*[@id='QMEditorArea']/table/tbody/tr[2]/td/iframe")
# 切换至 ‘正文’iframe
driver.switch_to.frame(main_body)

# 正文 -- 输入内容
driver.find_element_by_xpath("/html/body").send_keys(u"切换成功,输入正文内容")
time.sleep(2)

foxlix #10 · 2017年06月29日 Author
arkin 回复

成功了!非常感谢!!我自己一直都是在查看一些资料在自学中,也没个人问,所以遇到这种情况没办法处理,看到你的代码,我觉得我又学到了新的东西。真的非常感谢!

foxlix 回复

不客气,都是自学;不会的搜索、多问; 慢慢提高~加油

foxlix 关闭了讨论 06月29日 14:09
需要 登录 后方可回复, 如果你还没有账号请点击这里 注册