51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 3642|回复: 6
打印 上一主题 下一主题

登录qq邮箱无法定位到“写信”这个元素

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2017-5-12 15:05:48 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
测试环境: Firefox 48.0.2 + selenium3.3.1+python3.6.1

# coding=utf-8
from selenium import webdriver
import time
driver=webdriver.Firefox()
driver.get("https://mail.qq.com/")

driver.switch_to.frame("login_frame")
driver.find_element_by_id("switcher_plogin").click()
driver.find_element_by_id("u").clear()
driver.find_element_by_id("u").send_keys("807673920")
driver.find_element_by_id("p").clear()
driver.find_element_by_id("p").send_keys("password")
driver.find_element_by_id("login_button").click()

#time.sleep(3)
# driver.switch_to.frame("actionFrame")
driver.find_element_by_id("composebtn").click()

运行到最后一行就提示找不到composebtn这个元素,考虑到有可能是表单切换,我用最笨的方法把所有iframe 的id都找出来(osslog_iframe,mainFrame,leftFrame,actionFrame),试着切换到这几个frame还是提示找不到元素,同时提示找不到frame.
selenium.common.exceptions.NoSuchElementException: Message: Unable to locate element: [id="actionFrame"]
selenium.common.exceptions.NoSuchFrameException: Message: actionFrame


怕登录之后load时间不够长,我设置了等待时间,还是提示找不到元素 :
selenium.common.exceptions.NoSuchElementException: Message: Unable to locate element: [id="actionFrame"]
During handling of the above exception, another exception occurred:
selenium.common.exceptions.WebDriverException: Message: can't access dead object



有没有大神帮忙看看到底是什么问题呢,不胜感激!!!


分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

该用户从未签到

2#
发表于 2017-5-12 15:51:05 | 只看该作者
你自动化里有选择页面那个代码吗?你跳转页面了,需要切换页面在定位啊
回复 支持 反对

使用道具 举报

该用户从未签到

3#
发表于 2017-5-12 16:35:53 | 只看该作者
使用xpath一层层的来定位,从顶部元素一层层的找下来就行
driver.find_element_by_xpath("/div[@id='resize']/div[5]/div/ul/li/input").click()
回复 支持 反对

使用道具 举报

该用户从未签到

4#
 楼主| 发表于 2017-5-12 17:09:58 | 只看该作者
周京城 发表于 2017-5-12 15:51
你自动化里有选择页面那个代码吗?你跳转页面了,需要切换页面在定位啊

页面跳转了但是是同一个窗口,我用all_handles=driver.window_handles 查看窗口句柄一直只有一个并且是同一个。所以应该不需要切换从窗口吧。
回复 支持 反对

使用道具 举报

  • TA的每日心情
    慵懒
    2021-12-24 13:41
  • 签到天数: 314 天

    连续签到: 1 天

    [LV.8]测试军长

    5#
    发表于 2017-5-15 09:28:04 | 只看该作者
    我觉得你报错的原因是在于composebtn元素不在login_frame下面,导致报错,所以当你切换页面后,需要先跳出login_frame,你可以在driver.find_element_by_id("login_button").click()后面加上driver.switch_to_default_content()
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    6#
     楼主| 发表于 2017-5-15 10:11:27 | 只看该作者
    掉渣饼 发表于 2017-5-15 09:28
    我觉得你报错的原因是在于composebtn元素不在login_frame下面,导致报错,所以当你切换页面后,需要先跳出l ...

    你的思路太正确了,我试了下,只要跳出了原来的frame就能找到元素了。以后switch frame 之后一定要记得退出。谢谢谢~~~
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2018-3-30 09:35
  • 签到天数: 172 天

    连续签到: 6 天

    [LV.7]测试师长

    7#
    发表于 2017-6-1 15:17:29 | 只看该作者
    建议了解pyswat框架,全程录制案例,不需要手写代码,自动生成测试case,回放即可实现自动化测试
    回复 支持 反对

    使用道具 举报

    本版积分规则

    关闭

    站长推荐上一条 /1 下一条

    小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

    GMT+8, 2024-11-23 09:25 , Processed in 0.082172 second(s), 27 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

    快速回复 返回顶部 返回列表