51Testing软件测试论坛

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

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 3277|回复: 4
打印 上一主题 下一主题

[SilkTest] webdriver+python+selenium 登录163邮箱报错

[复制链接]
  • TA的每日心情
    开心
    2016-10-31 11:34
  • 签到天数: 16 天

    连续签到: 1 天

    [LV.4]测试营长

    跳转到指定楼层
    1#
    发表于 2016-9-21 20:01:59 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
    from selenium import webdriver

    driver = webdriver.Firefox()
    driver.get("http://mail.163.com/")
    driver.find_element_by_id("lbNormal").click()
    driver.find_element_by_xpath("//form/div/div/div[2]/input").send_keys("username")
    driver.find_element_by_class_name("j-inputtext dlpwd").send_keys("password")
    driver.find_element_by_id("dologin").click()

    driver.close()

    运行结果:
    raceback (most recent call last):
      File "D:\Python27\Test\autotest\mail163.py", line 6, in <module>
        driver.find_element_by_xpath("//form/div/div/div[2]/input").send_keys("username")
      File "D:\Python27\lib\site-packages\selenium-2.53.1-py2.7.egg\selenium\webdriver\remote\webdriver.py", line 290, in find_element_by_xpath
        return self.find_element(by=By.XPATH, value=xpath)
      File "D:\Python27\lib\site-packages\selenium-2.53.1-py2.7.egg\selenium\webdriver\remote\webdriver.py", line 744, in find_element
        {'using': by, 'value': value})['value']
      File "D:\Python27\lib\site-packages\selenium-2.53.1-py2.7.egg\selenium\webdriver\remote\webdriver.py", line 233, in execute
        self.error_handler.check_response(response)
      File "D:\Python27\lib\site-packages\selenium-2.53.1-py2.7.egg\selenium\webdriver\remote\errorhandler.py", line 194, in check_response
        raise exception_class(message, screen, stacktrace)
    NoSuchElementException: Message: Unable to locate element: {"method":"xpath","selector":"//form/div/div/div[2]/input"}
    Stacktrace:
        at FirefoxDriver.prototype.findElementInternal_ (file:///c:/users/administrator/appdata/local/temp/tmphmt2c9/extensions/fxdriver@googlecode.com/components/driver-component.js:10770)
        at FirefoxDriver.prototype.findElement (file:///c:/users/administrator/appdata/local/temp/tmphmt2c9/extensions/fxdriver@googlecode.com/components/driver-component.js:10779)
        at DelayedCommand.prototype.executeInternal_/h (file:///c:/users/administrator/appdata/local/temp/tmphmt2c9/extensions/fxdriver@googlecode.com/components/command-processor.js:12661)
        at DelayedCommand.prototype.executeInternal_ (file:///c:/users/administrator/appdata/local/temp/tmphmt2c9/extensions/fxdriver@googlecode.com/components/command-processor.js:12666)
        at DelayedCommand.prototype.execute/< (file:///c:/users/administrator/appdata/local/temp/tmphmt2c9/extensions/fxdriver@googlecode.com/components/command-processor.js:12608)

    我将代码中标红行改成通过id、name或class定位,都报找不到元素,请高手指点下,谢谢!

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

    使用道具 举报

  • TA的每日心情
    慵懒
    2017-11-7 16:44
  • 签到天数: 290 天

    连续签到: 1 天

    [LV.8]测试军长

    2#
    发表于 2016-9-22 08:35:35 | 只看该作者
    这个登录框有ifame,需要先切换ifame。
    回复 支持 反对

    使用道具 举报

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

    连续签到: 1 天

    [LV.8]测试军长

    3#
    发表于 2016-9-22 09:31:08 | 只看该作者
    因为在你定位的用户名输入框元素节点上面有个iframe,所以要先进入找个iframe中,还有因为你的用户名和密码输入框元素ID是动态变化的,所以取ID会每次运行找不到元素,所以可以用name定位。如果你后面要定位的元素不在那个iframe下,需要跳出iframe,可以使用driver.switch_to_default_content()
    参考如下:
    from selenium import webdriver
    driver = webdriver.Firefox()
    driver.get("http://mail.163.com/")
    driver.find_element_by_id("lbNormal").click()
    driver.switch_to_frame("x-URS-iframe")
    driver.find_element_by_name("email").send_keys("username"))
    driver.find_element_by_name("password").send_keys("password")
    driver.find_element_by_id("dologin").click()

    评分

    参与人数 1测试积点 +10 收起 理由
    lsekfe + 10 积极回复获得测试积点10

    查看全部评分

    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2016-10-31 11:34
  • 签到天数: 16 天

    连续签到: 1 天

    [LV.4]测试营长

    4#
     楼主| 发表于 2016-9-22 13:11:03 | 只看该作者
    若尘_51 发表于 2016-9-22 08:35
    这个登录框有ifame,需要先切换ifame。

    嗯,谢谢!
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2016-10-31 11:34
  • 签到天数: 16 天

    连续签到: 1 天

    [LV.4]测试营长

    5#
     楼主| 发表于 2016-9-22 13:12:22 | 只看该作者
    掉渣饼 发表于 2016-9-22 09:31
    因为在你定位的用户名输入框元素节点上面有个iframe,所以要先进入找个iframe中,还有因为你的用户名和密码 ...

    非常感谢
    回复 支持 反对

    使用道具 举报

    本版积分规则

    关闭

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

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

    GMT+8, 2024-11-22 11:55 , Processed in 0.066626 second(s), 25 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

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