我在WebDriver中使用ancestor-or-self
。
我得到的结果不正确,我注意到WebDriver也选择了我祖先的(前面)兄弟。
我该如何避免呢?
修改
代码示例:
<div class="model1">
<div class="ng-hide" id="1">
<div id="2">
<form class="model 3">
<div class="5">
<div class="model 6">
<div class="model 7">
<div class="9">
<button id="try1">
<button id="try2">
现在,我做下一个:
List<WebElement> lstElm = driver.findElements(By.xpath("//button[@id="try2"]/ancestor-or-self::*"));
当我遍历lstElm
,并搜索是否有一个元素类包含hide
时,我看到我的xpath也返回元素<div class="ng-hide" id="1">
。但是这个元素是它祖先的前兄弟(而不是它的祖先)
答案 0 :(得分:0)
与您的想法相反,以<div class="ng-hide" id="1">
开头的元素是<button id="try2">
的祖先。查看您的HTML并注意<div class="ng-hide" id="1">
如何开始,但永远不会在任何地方关闭:
<div class="model1">
<div class="ng-hide" id="1"> <!-- This is not closed!!! -->
<div id="2">
<form class="model 3">
<div class="5">
<div class="model 6">
<div class="model 7">
<div class="9">
<button id="try1">
<button id="try2">
要获得您期望的结果,您需要以下内容:
<div class="model1">
<div class="ng-hide" id="1"></div> <!-- The div is closed right away. -->
<div id="2">
<form class="model 3">
<div class="5">
<div class="model 6">
<div class="model 7">
<div class="9">
<button id="try1">
<button id="try2">
使用此HTML,<div class="ng-hide" id="1">
在下一个<div>
之前已关闭。