51Testing软件测试论坛

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

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 2111|回复: 10
打印 上一主题 下一主题

元素无法定位问题,求助

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2016-7-27 22:04:03 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
求高手看看,元素如下:<input name="txtusername" id="txtusername" data-val="true" datafield="User.UserName" data-val-required="用户名必须输入" type="text" value="" size="15" class="input input-w240h36">

代码如下:
#coding=utf-8
from selenium import webdriver
import time

driver = webdriver.Firefox()
driver.get("http://www.greenpass-tc.com/WebMain.htm")
time.sleep(2)
driver.find_element_by_id("txtusername").send_keys("sa")
driver.quit()

执行的时候一直提示找不到这个元素,报错:
Traceback (most recent call last):
  File "D:\selenium_study\test.py", line 8, in <module>
    driver.find_element_by_id("txtusername").send_keys("sa")
  File "D:\Python27\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 269, in find_element_by_id
    return self.find_element(by=By.ID, value=id_)
  File "D:\Python27\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 752, in find_element
    'value': value})['value']
  File "D:\Python27\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 236, in execute
    self.error_handler.check_response(response)
  File "D:\Python27\lib\site-packages\selenium\webdriver\remote\errorhandler.py", line 192, in check_response
    raise exception_class(message, screen, stacktrace)
NoSuchElementException: Message: Unable to locate element: {"method":"id","selector":"txtusername"}

Stacktrace:
    at FirefoxDriver.prototype.findElementInternal_ (file:///c:/users/zoumin/appdata/local/temp/tmpmlwwor/extensions/fxdriver@googlecode.com/components/driver-component.js:10770)
    at FirefoxDriver.prototype.findElement (file:///c:/users/zoumin/appdata/local/temp/tmpmlwwor/extensions/fxdriver@googlecode.com/components/driver-component.js:10779)
    at DelayedCommand.prototype.executeInternal_/h (file:///c:/users/zoumin/appdata/local/temp/tmpmlwwor/extensions/fxdriver@googlecode.com/components/command-processor.js:12661)
    at DelayedCommand.prototype.executeInternal_ (file:///c:/users/zoumin/appdata/local/temp/tmpmlwwor/extensions/fxdriver@googlecode.com/components/command-processor.js:12666)
    at DelayedCommand.prototype.execute/< (file:///c:/users/zoumin/appdata/local/temp/tmpmlwwor/extensions/fxdriver@googlecode.com/components/command-processor.js:12608)


xpath也试了,也是不行,求高手大大帮忙解答下是什么问题呀
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

该用户从未签到

2#
发表于 2016-7-28 09:29:39 | 只看该作者
看下整个html代码,这个input会不会在iframe里面?如果在,先切换一下iframe
回复 支持 反对

使用道具 举报

  • TA的每日心情
    奋斗
    2019-12-31 08:59
  • 签到天数: 975 天

    连续签到: 1 天

    [LV.10]测试总司令

    3#
    发表于 2016-7-28 09:41:17 | 只看该作者
    classname 也定位不了?
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    奋斗
    2018-8-27 15:56
  • 签到天数: 322 天

    连续签到: 1 天

    [LV.8]测试军长

    4#
    发表于 2016-7-28 10:38:51 | 只看该作者
    time.sleep(2)     这个单位我记得是毫秒哦。。。你这么设置太短了,等于没设。。把时间调长点。。应该是没加载完成所以没找到吧
    回复 支持 反对

    使用道具 举报

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

    连续签到: 1 天

    [LV.8]测试军长

    5#
    发表于 2016-7-28 10:50:14 | 只看该作者
    #coding=utf-8
    from selenium import webdriver
    import time

    driver = webdriver.Firefox()
    driver.get("http://www.greenpass-tc.com/WebMain.htm")
    time.sleep(2)
    driver.switch_to_frame("maincontent")
    driver.find_element_by_id("txtusername").send_keys("sa")
    driver.quit()

    评分

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

    查看全部评分

    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2022-2-7 11:58
  • 签到天数: 123 天

    连续签到: 1 天

    [LV.7]测试师长

    6#
    发表于 2016-7-28 10:50:59 | 只看该作者
    这种问题 一般先调试 试着先定位此id上一层的id 如果上一层id也找不到 再上一层,出来的路径可能会比较长,调试成功后可以再试着简化路径。
    可以多试试其他的定位 class  textname xpath 数列 等等
    回复 支持 反对

    使用道具 举报

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

    连续签到: 1 天

    [LV.8]测试军长

    7#
    发表于 2016-7-28 10:54:18 | 只看该作者
    因为txtusername属性在id为maincontent的iframe中,你可以在txtusername上面的节点中找iframe,所以需要先切换到iframe中
    回复 支持 反对

    使用道具 举报

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

    连续签到: 1 天

    [LV.8]测试军长

    8#
    发表于 2016-7-28 10:59:55 | 只看该作者
    因为这是在iframe里面,所以在driver.find_element_by_id("txtusername").send_keys("sa")之前加上:
    driver.switch_to_frame("maincontent")
    time.sleep(1)

    本帖子中包含更多资源

    您需要 登录 才可以下载或查看,没有帐号?(注-册)加入51Testing

    x
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    9#
     楼主| 发表于 2016-7-28 11:00:24 | 只看该作者
    naiuty13 发表于 2016-7-28 09:29
    看下整个html代码,这个input会不会在iframe里面?如果在,先切换一下iframe

    谢谢,解决了,是这个问题,感谢感谢
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    前天 06:50
  • 签到天数: 1983 天

    连续签到: 5 天

    [LV.Master]测试大本营

    11#
    发表于 2016-8-13 15:54:08 | 只看该作者
    涉及框架的确实要注意
    回复 支持 反对

    使用道具 举报

    本版积分规则

    关闭

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

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

    GMT+8, 2024-9-22 13:39 , Processed in 0.096833 second(s), 27 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

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