Java 列表<;WebElement>;。获取(i)。单击拾取随机元素
我有一个图像列表,每个都需要点击。 下面是HTMLJava 列表<;WebElement>;。获取(i)。单击拾取随机元素,java,html,selenium,selenium-webdriver,Java,Html,Selenium,Selenium Webdriver,我有一个图像列表,每个都需要点击。 下面是HTML <div id="VELayerListDiv"> <div id="msftve_1002"> <a id="msftve_1002_200000_10000" class="VEAPI_Pushpin" href="javascript://pushin hover" style="position: absolute; left: -17px; top: 450px; display: block;
<div id="VELayerListDiv">
<div id="msftve_1002">
<a id="msftve_1002_200000_10000" class="VEAPI_Pushpin" href="javascript://pushin hover" style="position: absolute; left: -17px; top: 450px; display: block; z-index: 1000;">
<div onmousedown="if (VEMap._GetMapFromGUID(1429800443062).FireEvent("onmousedown"))return;VEDragVEShapeDown("msftve_1002_200000_10000",1429800443062);" onmouseover="if (VEMap._GetMapFromGUID(1429800443062).FireEvent("onmouseover"))return;VEShowVEShapeERO("msftve_1002_200000_10000",1429800443062);" onmouseout="if (VEMap._GetMapFromGUID(1429800443062).FireEvent("onmouseout"))return;VEHideVEShapeERO(false);">
<div style="position:absolute;left:6.5px;top:-2px;writing-mode:tb-rl;filter:progid:DXImageTransform.Microsoft.BasicImage(grayscale=0, xray=0, mirror=0, invert=0, opacity=1, rotation=0);opacity:1;">
<img width="17" height="34" src="images/spatial/custout_50-499_U2.png"/>
</div>
</div>
</a>
</div>
<div id="msftve_1003">
<a id="msftve_1003_200003_10003" class="VEAPI_Pushpin" href="javascript://pushin hover" style="position: absolute; left: 278.5px; top: 363.5px; display: block; z-index: 1000;">
<div onmousedown="if (VEMap._GetMapFromGUID(1429800443062).FireEvent("onmousedown"))return;VEDragVEShapeDown("msftve_1003_200003_10003",1429800443062);" onmouseover="if (VEMap._GetMapFromGUID(1429800443062).FireEvent("onmouseover"))return;VEShowVEShapeERO("msftve_1003_200003_10003",1429800443062);" onmouseout="if (VEMap._GetMapFromGUID(1429800443062).FireEvent("onmouseout"))return;VEHideVEShapeERO(false);">
<div style="position:absolute;left:6.5px;top:-2px;writing-mode:tb-rl;filter:progid:DXImageTransform.Microsoft.BasicImage(grayscale=0, xray=0, mirror=0, invert=0, opacity=1, rotation=0);opacity:1;">
<img width="17" height="34" src="images/spatial/custout_2-49_U2.png"/>
</div>
</div>
</a>
<a id="msftve_1003_200004_10004" class="VEAPI_Pushpin" href="javascript://pushin hover" style="position: absolute; left: 277.5px; top: 362.5px; display: block; z-index: 1000;">
<div onmousedown="if (VEMap._GetMapFromGUID(1429800443062).FireEvent("onmousedown"))return;VEDragVEShapeDown("msftve_1003_200004_10004",1429800443062);" onmouseover="if (VEMap._GetMapFromGUID(1429800443062).FireEvent("onmouseover"))return;VEShowVEShapeERO("msftve_1003_200004_10004",1429800443062);" onmouseout="if (VEMap._GetMapFromGUID(1429800443062).FireEvent("onmouseout"))return;VEHideVEShapeERO(false);">
<div style="position:absolute;left:6.5px;top:-2px;writing-mode:tb-rl;filter:progid:DXImageTransform.Microsoft.BasicImage(grayscale=0, xray=0, mirror=0, invert=0, opacity=1, rotation=0);opacity:1;">
<img width="17" height="34" src="images/spatial/custout_2-49_U2.png"/>
</div>
</div>
</a>
</div>
我编写了以下代码:
List<WebElement> pins = driver.findElements(By.xpath("//*[@id='VELayerListDiv']/div/a/div/div/img")));
System.out.println("Total Pins :"+pins.size());
for(int x=0;x<pins.size();x++)
{
pins.get(x).click();
}
List pins=driver.findElements(By.xpath(“/*[@id='VELayerListDiv']/div/a/div/div/div/img”);
System.out.println(“总引脚:+Pins.size());
对于(int x=0;xH列表中有多少WebElement?对于顶部div元素中的两个div对象,HTML不相同。此外,请使用var pinSize=pins.Size();而不是每次调用它的大小。是否尝试了By.xpath(//img))?如果您的页面有很多图像,则可能无法工作。我可以获得34个img列表。如果我对列表进行大小调整,则获得34个正确的。我的问题是,如果我迭代列表并单击每个Web元素,它实际上是随机单击元素。是否因为img标记没有任何其他属性可供selenium识别y(尽管我认为selenium应该自己索引img标记)为什么不使用by.tagName(“img”)
,然后使用getAttribute(“宽度=17”)
只是为了确保您只选择html中给出的那些img标记?@AshutoshBarawkar-我认为您对该行为有一个有效的评估。如果图像没有任何独特之处,Selenium可能不知道选择哪个。在您的示例html中,第2个和第3个img元素是相同的。第1个是不同的。我认为Selenium总是为那些相同的元素单击相同的img元素。@MikeWeber-我想我知道问题是什么…img在地图上,有时一个接一个地杂乱无章。问题是..selenium是否在html或特定位置单击img标记,即如果管脚重叠,会出现此问题吗