51Testing软件测试论坛

标题: 【新手求助】selenium元素定位不到,求帮忙 [打印本页]

作者: jccg0769    时间: 2016-3-10 10:14
标题: 【新手求助】selenium元素定位不到,求帮忙
本帖最后由 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>
[attach]100334[/attach]
我想定位这个img这里,点击这个img进入下一个页面,但是我怎么定位也不行,我用firebug的xpath也不行,有人能帮忙吗WebElement img = driver.findElement(By.xpath("/html/body/form/div[2]/div[2]/div[5]/img"));
    img.click();


作者: 山丘的测试之道    时间: 2016-3-10 10:30
试试,
WebElement el= driver.findElement(By.xpath("//div[@id='divYJMenu']/div[@id='td4']/img"));
el.click();
作者: 山丘的测试之道    时间: 2016-3-10 10:30
试试,
WebElement el= driver.findElement(By.xpath("//div[@id='divYJMenu']/div[@id='td4']/img"));
el.click();
作者: jccg0769    时间: 2016-3-10 10:36
山丘的测试之道 发表于 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"}
作者: 山丘的测试之道    时间: 2016-3-10 10:40
jccg0769 发表于 2016-3-10 10:36
还是不行哦,还是感谢你,自己一个人摸索的确走了很多弯路,谢谢你
Unable to locate element: {"metho ...

客气了,
   这张图片是不是需要鼠标移动到元素上,才会显示出来的?
作者: jccg0769    时间: 2016-3-10 10:41
山丘的测试之道 发表于 2016-3-10 10:40
客气了,
   这张图片是不是需要鼠标移动到元素上,才会显示出来的?

不需要的,图片就一直显示着的
作者: 山丘的测试之道    时间: 2016-3-10 10:54
这样试试
WebElement div = driver.findElement(By.xpath("//div[@id='divYJMenu']/div[@class='webemshead' and @key='ZBZS']"));
WebElement img = div.findElement(By.tagName("img"));
img.click();
作者: jccg0769    时间: 2016-3-10 10:58
山丘的测试之道 发表于 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']"}
也是不行
作者: lin0731032    时间: 2016-3-10 11:11
获取XPATH元素的图看看
作者: jccg0769    时间: 2016-3-10 11:19
lin0731032 发表于 2016-3-10 11:11
获取XPATH元素的图看看

我一直都是获取那个图的XPATH的,但是不行啊
作者: prettyfool    时间: 2016-3-10 11:44
WebElement img = driver.findElement(By.xpath("//img[@name='Image4']"));
    img.click();
作者: jccg0769    时间: 2016-3-10 14:06
prettyfool 发表于 2016-3-10 11:44
WebElement img = driver.findElement(By.xpath("//img[@name='Image4']"));
    img.click();

这样不行,试过,不过还是谢谢你
作者: prettyfool    时间: 2016-3-10 14:20
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();
作者: jccg0769    时间: 2016-3-10 14:28
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就遇到这样的问题,太打击我了
作者: joykao    时间: 2016-3-10 14:53
往上面翻翻父类元素,看看是不是有多frame,如果是的话需要switch下,然后再找元素
作者: prettyfool    时间: 2016-3-10 15:31
jccg0769 发表于 2016-3-10 14:28
我按照你发的试了一下,也是不行,
Timed out after 10 seconds waiting for presence of element locat ...

不要恢心,有问题提问题,找答案解决问题的过程就是学习的过程,我不太清楚你这个完整代码是怎样的,但大家提供的方法基本上没有问题的,思路也是正确的,可能还有些地方没考虑到,就像楼上说的frame嵌套也是情况的一种。加油
作者: jccg0769    时间: 2016-3-10 17:15
prettyfool 发表于 2016-3-10 15:31
不要恢心,有问题提问题,找答案解决问题的过程就是学习的过程,我不太清楚你这个完整代码是怎样的,但大 ...

已找到问题,就是因为有iframe,太感谢你们了
作者: jccg0769    时间: 2016-3-10 17:15
joykao 发表于 2016-3-10 14:53
往上面翻翻父类元素,看看是不是有多frame,如果是的话需要switch下,然后再找元素

还真的是因为有iframe,太感谢了!
作者: joykao    时间: 2016-3-10 18:27
jccg0769 发表于 2016-3-10 17:15
还真的是因为有iframe,太感谢了!

这种问题一般化就这几种原因




欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/) Powered by Discuz! X3.2