gpt4 book ai didi

java - 使用 selenium xpath 动态查找前一个兄弟元素

转载 作者:行者123 更新时间:2023-11-30 06:49:22 25 4
gpt4 key购买 nike

我正在为以下代码编写 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>

这些是如下所示的复选框。复选框的数量根据数据库值进行更改。

enter image description here

在我的代码中,我首先检查是否选中了“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 标签,而不是前一个。我想要一个之前的 sibling 。

最佳答案

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

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

关于java - 使用 selenium xpath 动态查找前一个兄弟元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42829227/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com