Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/332.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 列表<;WebElement>;。获取(i)。单击拾取随机元素_Java_Html_Selenium_Selenium Webdriver - Fatal编程技术网

Java 列表<;WebElement>;。获取(i)。单击拾取随机元素

Java 列表<;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;

我有一个图像列表,每个都需要点击。 下面是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; 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标记,即如果管脚重叠,会出现此问题吗