繁体   English   中英

动态使用selenium xpath查找先前的同级元素

[英]Finding previous sibling element using selenium xpath dynamically

我正在为以下代码编写Selenium脚本。

<div id="abc" class="ui-selectmanycheckbox ui-widget hpsapf-chechkbox">
     <div class="ui-chkbox ui-widget">
        <div class="ui-helper-hidden-accessible">
           <input id="abc:0" name="abc" type="checkbox" value="0" checked="checked">
        </div>
        <div class="ui-chkbox-box ui-widget ui-corner-all ui-state-default ui-state-active">
           <span class="ui-chkbox-icon ui-icon ui-icon-check ui-c"></span>
        </div>
     </div>
     <span class="hpsapf-radio-label">
        <label for="abc:0">Herr</label>
     </span>
     <div class="ui-chkbox ui-widget">
        <div class="ui-helper-hidden-accessible">
           <input id="abc:1" name="abc" type="checkbox" value="1">
        </div>
        <div class="ui-chkbox-box ui-widget ui-corner-all ui-state-default">
           <span class="ui-chkbox-icon ui-icon ui-icon-blank ui-c"></span>  
        </div>
     </div>
     <span class="hpsapf-radio-label">
        <label for="abc:1">Frau</label>
     </span>
</div>

这些是与以下类似的复选框。复选框的数量根据数据库值而更改。

在此处输入图片说明

在我的代码中,我首先检查是否已选中“ Frau”复选框。 所以我尝试了以下代码段。

WebElement mainElement= driver.findElement(By.id("abc"));
WebElement label=mainElement.findElement(By.xpath(".//label[contains(@for,'abc')][text() = 'Frau']"));
WebElement parent = label.findElement(By.xpath(".."));
WebElement div = parent.findElement(By.xpath("preceding-sibling::::div"));
WebElement checkBox = div.findElement(By.className("ui-chkbox-box"));
String css = checkBox.getAttribute("class");
if(css.contains("ui-state-active")) {
    return "checked";
}
else
{
    return "unchecked";
}

但是,当我尝试执行此脚本时。 WebElement div = parent.findElement(By.xpath("preceding-sibling::::div")); 给我第一个div标签,而不是前一个。 我想要一个前面的兄弟姐妹。

使用::和索引,而不是::::

WebElement div = parent.findElement(By.xpath("preceding-sibling::div[1]"));

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM