gpt4 book ai didi

selenium - 在 xpath 中定位 self 或 perent 节点的兄弟元素

转载 作者:行者123 更新时间:2023-12-03 16:15:21 25 4
gpt4 key购买 nike

我试图找到一个元素,它可以在 self 节点或其父节点之前的兄弟节点。

我必须获取所有文本字段值以及给定此图像的标签:

enter image description here

如果我看到 DOM,我发现了 snap 中提到的以下结构

enter image description here

我试过下面的代码

 // this is the xpath to get all the textboxes

@FindBy(xpath = "//input[not(@id='fuPanCardFilePath')][not(@type='hidden')][not(@id='fuIDProofFilePath' or @id='txtChangePhone' or @id='txtOTP' )]")
public List<WebElement> allTextFieldsDetails;


// This how i am getting labels of correspondent textfield

for(WebElement e : allTextFieldsDetails)
{
LogWriter.logger.info(e.findElement(By.xpath("preceding-sibling::label")).getText() +"---"+e.getAttribute("value"));
}

它对那些 <label> 工作正常这是 <input> 的确切前兄弟但是如果一个 label是父 div 的前兄弟的 input标记然后它抛出异常 NoSuchElementException .

这是 HTML 结构:
<div class="row">
<div class="col-sm-6 form-group">
<label>Last Name </label>
<input id="LastName" class="form-control valid" data-val="true" data-val-length="The field Last Name must be a string with a maximum length of 20." data-val-length-max="20" data-val-regex="Please enter valid Last Name" data-val-regex-pattern="[a-zA-Z ]+" data-val-required="Please enter valid Last Name" maxlength="20" name="LastName" placeholder="Last Name" value="Kapadia" aria-required="true" aria-describedby="LastName-error" aria-invalid="false" type="text"/>
<span class="field-validation-valid" data-valmsg-for="LastName" data-valmsg-replace="true"/>
</div>
</div>
<div class="row">
<div class="col-sm-6 form-group">
<label>Email ID</label>
<input id="Email" class="form-control valid" data-val="true" data-val-length="The field Email must be a string with a maximum length of 320." data-val-length-max="320" data-val-regex="Please enter valid Email" data-val-regex-pattern="[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,3}$" data-val-required="Please enter valid Email" maxlength="80" name="Email" placeholder="Email" value="narendra.h.rajput@trimantra.net" aria-required="true" aria-describedby="Email-error" aria-invalid="false" type="email"/>
<span class="field-validation-valid" data-valmsg-for="Email" data-valmsg-replace="true"/>
</div>
</div>
<div class="col-sm-6 form-group">
<label>Date Of Birth</label>
<div class="input-append date tspDOB-date">
<input id="DOB" class="form-control" value="1989-09-09" data-val="true" data-val-date="The field Date of Birth must be a date." data-val-required="Please enter a valid birth date" name="DOB" placeholder="Date of Birth" type="text"/>
<span class="field-validation-valid" data-valmsg-for="DOB" data-valmsg-replace="true"/>
<span class="add-on"/>
</div>
</div>
<div class="row">
<div class="col-sm-6 form-group">
<label>Mobile No</label>
<div class="col-sm-12 form-group displayinlinediv">
<input id="Mobile" class="form-control valid" name="Mobile" readonly="readonly" value="00000000000" aria-invalid="false" type="text"/>
<button id="btnchange" class="btn btn-common-left" type="button">Change</button>
</div>
</div>
</div>

我想找到与输入字段对应的标签。

最佳答案

你可以试试

preceding::label[1]

获得第一个 label可以是 parent 或祖 parent 的 sibling 或 sibling 的元素...

另请注意,您可以简化 XPath对于 input元素作为
//input[not(@type='hidden') and not(@id=('fuIDProofFilePath', 'txtChangePhone', 'txtOTP', 'fuPanCardFilePath'))]

关于selenium - 在 xpath 中定位 self 或 perent 节点的兄弟元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44587306/

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