51Testing软件测试论坛

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

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 2577|回复: 18
打印 上一主题 下一主题

【新手求助】selenium元素定位不到,求帮忙

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2016-3-10 10:14:49 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 jccg0769 于 2016-3-10 10:18 编辑

<body class="sysTopBody">
<form id="form1" enableeventvalidation="false" action="frmTitleFrame_New.aspx?isenfoldmenu=0&oneindex=0&twoindex=0&threeindex=0&fourindex=100&fiveindex=0" method="post" name="form1">
<div>
<script type="text/javascript" src="/dgyj_webems/WebResource.axd?d=cR7MIPMyhTWllf7QHV1UE05dkA9bp9Q-yTLCxm2fq3UDpegA4TVllUbfoptNptp3E4fh7TBG8Rgq1eWR8_vMubiEqU5ypolfi98CVPgb4Fp3oN1UQLh5oinko_FGKzkeZCuZZ6771Yt8qfb4D1qjkjtEBuL_DJXZVmofc5BFMdjeQgpQ0&t=635636550084511626">
<div style="width: 100%; height: 83px; float: left;">
<div class="sysLogo">
<div id="divYJMenu" class="divFirstMenu">
<div id="td0" class="webemshead" rel="frmDataFrameNew.aspx" key="SY">
<div id="td1" class="webemshead" rel="frmDataFrameNew.aspx" key="XXZY">
<div id="td2" class="webemshead" rel="frmDataFrameNew.aspx" key="YJYA">
<div id="td3" class="webemshead" rel="frmDataFrameNew.aspx" key="JCYJ">
<div id="td4" class="webemshead" rel="frmDataFrameNew.aspx" key="ZBZS">
<img src="Images/myTheme3/headerImg/head_a_ZBZS.png" name="Image4">
<div>新人求助</div>

我想定位这个img这里,点击这个img进入下一个页面,但是我怎么定位也不行,我用firebug的xpath也不行,有人能帮忙吗WebElement img = driver.findElement(By.xpath("/html/body/form/div[2]/div[2]/div[5]/img"));
    img.click();

本帖子中包含更多资源

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

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

使用道具 举报

  • TA的每日心情
    开心
    2016-7-21 11:07
  • 签到天数: 37 天

    连续签到: 1 天

    [LV.5]测试团长

    2#
    发表于 2016-3-10 10:30:06 | 只看该作者
    试试,
    WebElement el= driver.findElement(By.xpath("//div[@id='divYJMenu']/div[@id='td4']/img"));
    el.click();
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2016-7-21 11:07
  • 签到天数: 37 天

    连续签到: 1 天

    [LV.5]测试团长

    3#
    发表于 2016-3-10 10:30:26 | 只看该作者
    试试,
    WebElement el= driver.findElement(By.xpath("//div[@id='divYJMenu']/div[@id='td4']/img"));
    el.click();
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    4#
     楼主| 发表于 2016-3-10 10:36:01 | 只看该作者
    山丘的测试之道 发表于 2016-3-10 10:30
    试试,
    WebElement el= driver.findElement(By.xpath("//div[@id='divYJMenu']/div[@id='td4']/img"));
    e ...

    还是不行哦,还是感谢你,自己一个人摸索的确走了很多弯路,谢谢你
    Unable to locate element: {"method":"xpath","selector":"//div[@id='divYJMenu']/div[@id='td4']/img"}
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2016-7-21 11:07
  • 签到天数: 37 天

    连续签到: 1 天

    [LV.5]测试团长

    5#
    发表于 2016-3-10 10:40:36 | 只看该作者
    jccg0769 发表于 2016-3-10 10:36
    还是不行哦,还是感谢你,自己一个人摸索的确走了很多弯路,谢谢你
    Unable to locate element: {"metho ...

    客气了,
       这张图片是不是需要鼠标移动到元素上,才会显示出来的?
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    6#
     楼主| 发表于 2016-3-10 10:41:57 | 只看该作者
    山丘的测试之道 发表于 2016-3-10 10:40
    客气了,
       这张图片是不是需要鼠标移动到元素上,才会显示出来的?

    不需要的,图片就一直显示着的
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2016-7-21 11:07
  • 签到天数: 37 天

    连续签到: 1 天

    [LV.5]测试团长

    7#
    发表于 2016-3-10 10:54:03 | 只看该作者
    这样试试
    WebElement div = driver.findElement(By.xpath("//div[@id='divYJMenu']/div[@class='webemshead' and @key='ZBZS']"));
    WebElement img = div.findElement(By.tagName("img"));
    img.click();
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    8#
     楼主| 发表于 2016-3-10 10:58:45 | 只看该作者
    山丘的测试之道 发表于 2016-3-10 10:54
    这样试试
    WebElement div = driver.findElement(By.xpath("//div[@id='divYJMenu']/div[@class='webemshea ...

    Unable to locate element: {"method":"xpath","selector":"//div[@id='divYJMenu']/div[@class='webemshead' and @key='ZBZS']"}
    也是不行
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    无聊
    2016-8-18 09:20
  • 签到天数: 3 天

    连续签到: 1 天

    [LV.2]测试排长

    9#
    发表于 2016-3-10 11:11:30 | 只看该作者
    获取XPATH元素的图看看
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    10#
     楼主| 发表于 2016-3-10 11:19:42 | 只看该作者
    lin0731032 发表于 2016-3-10 11:11
    获取XPATH元素的图看看

    我一直都是获取那个图的XPATH的,但是不行啊
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    慵懒
    2017-9-21 15:25
  • 签到天数: 50 天

    连续签到: 1 天

    [LV.5]测试团长

    11#
    发表于 2016-3-10 11:44:16 | 只看该作者
    WebElement img = driver.findElement(By.xpath("//img[@name='Image4']"));
        img.click();
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    12#
     楼主| 发表于 2016-3-10 14:06:21 | 只看该作者
    prettyfool 发表于 2016-3-10 11:44
    WebElement img = driver.findElement(By.xpath("//img[@name='Image4']"));
        img.click();

    这样不行,试过,不过还是谢谢你
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    慵懒
    2017-9-21 15:25
  • 签到天数: 50 天

    连续签到: 1 天

    [LV.5]测试团长

    13#
    发表于 2016-3-10 14:20:43 | 只看该作者
    jccg0769 发表于 2016-3-10 14:06
    这样不行,试过,不过还是谢谢你

    不应该啊,楼上几位的回答也应该是对的,考虑到ID值可能是动态的,所以绕过id值,这个xpath应该是对的,你可以下个firefox的插件,firepath去试试,要用xpath的相对路径去定位。
    如果还定位不到,我觉得不是定位方法出错了,应该是你这个图片需要时间去加载,定位操作在图片没加载之前就执行的原因了。如果是这个原因的话,有两个方案:一是在定位代码前加一个thread sleep(3000); 二是用隐式等待或显示等待。
    WebElement img = (new WebDriverWait(driver,10)).until(ExpectedConditions.presenceOfElementLocated(By.xpath("//img[@name='Image4']")));
    img.click();
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    14#
     楼主| 发表于 2016-3-10 14:28:56 | 只看该作者
    prettyfool 发表于 2016-3-10 14:20
    不应该啊,楼上几位的回答也应该是对的,考虑到ID值可能是动态的,所以绕过id值,这个xpath应该是对的, ...

    我按照你发的试了一下,也是不行,
    Timed out after 10 seconds waiting for presence of element located by: By.xpath: //img[@name='Image4']


    我用fireBUG找出来的Xpath是“/html/body/form/div[2]/div[2]/div[5]/img”
    新人第一次用selenium就遇到这样的问题,太打击我了
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    无聊
    2020-12-8 11:20
  • 签到天数: 605 天

    连续签到: 1 天

    [LV.9]测试副司令

    15#
    发表于 2016-3-10 14:53:54 | 只看该作者
    往上面翻翻父类元素,看看是不是有多frame,如果是的话需要switch下,然后再找元素
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    慵懒
    2017-9-21 15:25
  • 签到天数: 50 天

    连续签到: 1 天

    [LV.5]测试团长

    16#
    发表于 2016-3-10 15:31:23 | 只看该作者
    jccg0769 发表于 2016-3-10 14:28
    我按照你发的试了一下,也是不行,
    Timed out after 10 seconds waiting for presence of element locat ...

    不要恢心,有问题提问题,找答案解决问题的过程就是学习的过程,我不太清楚你这个完整代码是怎样的,但大家提供的方法基本上没有问题的,思路也是正确的,可能还有些地方没考虑到,就像楼上说的frame嵌套也是情况的一种。加油
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    17#
     楼主| 发表于 2016-3-10 17:15:19 | 只看该作者
    prettyfool 发表于 2016-3-10 15:31
    不要恢心,有问题提问题,找答案解决问题的过程就是学习的过程,我不太清楚你这个完整代码是怎样的,但大 ...

    已找到问题,就是因为有iframe,太感谢你们了
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    18#
     楼主| 发表于 2016-3-10 17:15:59 | 只看该作者
    joykao 发表于 2016-3-10 14:53
    往上面翻翻父类元素,看看是不是有多frame,如果是的话需要switch下,然后再找元素

    还真的是因为有iframe,太感谢了!
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    无聊
    2020-12-8 11:20
  • 签到天数: 605 天

    连续签到: 1 天

    [LV.9]测试副司令

    19#
    发表于 2016-3-10 18:27:52 | 只看该作者
    jccg0769 发表于 2016-3-10 17:15
    还真的是因为有iframe,太感谢了!

    这种问题一般化就这几种原因
    回复 支持 反对

    使用道具 举报

    本版积分规则

    关闭

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

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

    GMT+8, 2024-11-23 16:46 , Processed in 0.082132 second(s), 23 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

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