jccg0769 发表于 2016-3-10 10:14:49

【新手求助】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>

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

山丘的测试之道 发表于 2016-3-10 10:30:06

试试,
WebElement el= driver.findElement(By.xpath("//div[@id='divYJMenu']/div[@id='td4']/img"));
el.click();

山丘的测试之道 发表于 2016-3-10 10:30:26

试试,
WebElement el= driver.findElement(By.xpath("//div[@id='divYJMenu']/div[@id='td4']/img"));
el.click();

jccg0769 发表于 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"}

山丘的测试之道 发表于 2016-3-10 10:40:36

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

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

jccg0769 发表于 2016-3-10 10:41:57

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

不需要的,图片就一直显示着的

山丘的测试之道 发表于 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();

jccg0769 发表于 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']"}
也是不行

lin0731032 发表于 2016-3-10 11:11:30

获取XPATH元素的图看看

jccg0769 发表于 2016-3-10 11:19:42

lin0731032 发表于 2016-3-10 11:11
获取XPATH元素的图看看

我一直都是获取那个图的XPATH的,但是不行啊

prettyfool 发表于 2016-3-10 11:44:16

WebElement img = driver.findElement(By.xpath("//img[@name='Image4']"));
    img.click();

jccg0769 发表于 2016-3-10 14:06:21

prettyfool 发表于 2016-3-10 11:44
WebElement img = driver.findElement(By.xpath("//img[@name='Image4']"));
    img.click();

这样不行,试过,不过还是谢谢你

prettyfool 发表于 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();

jccg0769 发表于 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/div/div/img”
新人第一次用selenium就遇到这样的问题,太打击我了

joykao 发表于 2016-3-10 14:53:54

往上面翻翻父类元素,看看是不是有多frame,如果是的话需要switch下,然后再找元素

prettyfool 发表于 2016-3-10 15:31:23

jccg0769 发表于 2016-3-10 14:28
我按照你发的试了一下,也是不行,
Timed out after 10 seconds waiting for presence of element locat ...

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

jccg0769 发表于 2016-3-10 17:15:19

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

已找到问题,就是因为有iframe,太感谢你们了

jccg0769 发表于 2016-3-10 17:15:59

joykao 发表于 2016-3-10 14:53
往上面翻翻父类元素,看看是不是有多frame,如果是的话需要switch下,然后再找元素

还真的是因为有iframe,太感谢了!

joykao 发表于 2016-3-10 18:27:52

jccg0769 发表于 2016-3-10 17:15
还真的是因为有iframe,太感谢了!

:loveliness:这种问题一般化就这几种原因
页: [1]
查看完整版本: 【新手求助】selenium元素定位不到,求帮忙