acd*_*ior 149
那里有几个选择.示例代码是Java,但是其他语言的端口应该很简单.
WebElement myElement = driver.findElement(By.id("myDiv"));
WebElement parent = (WebElement) ((JavascriptExecutor) driver).executeScript(
"return arguments[0].parentNode;", myElement);
Run Code Online (Sandbox Code Playgroud)
WebElement myElement = driver.findElement(By.id("myDiv"));
WebElement parent = myElement.findElement(By.xpath("./.."));
Run Code Online (Sandbox Code Playgroud)
WebElement注意:正如您所看到的,对于JavaScript版本,您需要使用driver.如果您无法直接访问它,则可以从WebElement使用中检索它:
WebDriver driver = ((WrapsDriver) myElement).getWrappedDriver();
Run Code Online (Sandbox Code Playgroud)
And*_*son 25
更多关于 XPath axes
让我们说我们有以下HTML结构:
<div class="third_level_ancestor">
<nav class="second_level_ancestor">
<div class="parent">
<span>Child</span>
</div>
</nav>
</div>
Run Code Online (Sandbox Code Playgroud)
//span/parent::*- 返回任何直接父元素.在这种情况下输出是 <div class="parent">
//span/parent::div[@class="parent"]- 仅返回精确节点类型的父元素,并且仅当指定的谓词为True 时才返回.输出: <div class="parent">
//span/ancestor::*- 返回所有祖先(包括父级).输出:<div class="parent">,<nav class="second_level_ancestor">,<div class="third_level_ancestor">...
//span/ancestor-or-self::*- 返回所有祖先和当前元素本身.输出:<span>Child</span>,<div class="parent">,<nav class="second_level_ancestor">,<div class="third_level_ancestor">...
//span/ancestor::div[2]- 返回类型的第二个祖先(从父级开始)div.输出: <div class="third_level_ancestor">
Bhu*_*ani 15
我们将您的DOM视为
<a>
<!-- some other icons and texts -->
<span>Close</span>
</a>
Run Code Online (Sandbox Code Playgroud)
现在您需要根据<span>文本选择父标记'a' ,然后使用
driver.findElement(By.xpath("//a[.//span[text()='Close']]"));
Run Code Online (Sandbox Code Playgroud)
说明:根据节点的子节点值选择节点
这可能对其他人有用:使用此示例 html
<div class="ParentDiv">
<label for="label">labelName</label>
<input type="button" value="elementToSelect">
</div>
<div class="DontSelect">
<label for="animal">pig</label>
<input type="button" value="elementToSelect">
</div>
Run Code Online (Sandbox Code Playgroud)
例如,如果我想在同一部分(例如 div)中选择一个元素作为标签,则可以使用此
//label[contains(., 'labelName')]/parent::*//input[@value='elementToSelect']
Run Code Online (Sandbox Code Playgroud)
这也就意味着,寻找一个标签(可以像什么a,h2)叫labelName。导航到该标签的父级(即div class="ParentDiv")。在该父元素的后代中搜索以查找值为 的任何子元素elementToSelect。有了这个,就不会选择第二个elementToSelect用DontSelectDIV父。
诀窍是,您可以通过先导航到父元素,然后在该父元素的后代中搜索所需元素来减少元素的搜索区域。following-sibling::h2在某些情况下也可以使用其他语法。这意味着跟随元素的兄弟元素h2。这将适用于具有相同父级的相同级别的元素。
| 归档时间: |
|
| 查看次数: |
136405 次 |
| 最近记录: |