c# - 如何使用现有元素的xpath获取同级?

标签 c# selenium xpath appium

我正在尝试使用xpath通过现有元素查找元素。

我可以尝试从驱动程序中查找元素,例如:

var x=driver.FindElementByXPath("//locatorhere/following-sibling::LOCATORHERE");


但是当我这样做时,它将无法正常工作:

var element=driver.FindElementByXPath("//locatorhere");
var x=element.FindElementByXPath("/following-sibling::LOCATORHERE")


我的问题是,我究竟如何才能通过第二种方式获得元素?

最佳答案

following-sibling XPath中的前导斜线不正确。代替:

var x=element.FindElementByXPath("/following-sibling::LOCATORHERE")


它应该是:

var x=element.FindElementByXPath("following-sibling::LOCATORHERE")


调用/时,不需要前面的element.FindElement()字符,因为/是隐式的。但是,如果要用following-sibling写入现有XPath,则必须使用前面的斜杠。

例如,给定以下HTML:

<div>
    <input> Text </input>
    <span> More Text </span>
</div>


如果您这样得到input

var input = driver.FindElement(By.XPath("div/input"));


然后,您可以像这样获得span

var span = input.FindElement(By.XPath("following-sibling::span"))


请注意,上面的XPath如何在/中不使用前面的following-sibling。现在,如果您希望将following-sibling用作更长的XPath的一部分,这会有所变化:

var span = driver.FindElement(By.XPath("div/input/following-sibling::span"))

关于c# - 如何使用现有元素的xpath获取同级?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59220872/

相关文章:

c# - 无法捕获 Winforms 中未处理的异常

java - selenium RemoteWebDriver firefox 产生 NullPointerException

xml - qml/qt 中带有 xpath 的父项

python - Selenium HTMLUNIT Python 滚动页面

c# - 在 C# 中将非常长的日期格式解析为 DateTime

java - IntelliJ IDEA 的 Visual Studio 白色背景主题

twitter-bootstrap - Capybara:不会选择 Bootstrap 按钮组

php - 仅抓取网页的主要内容(忽略页眉、页脚和侧边栏)

c# - 通过数据注释进行身份验证和授权

java - 每个页面测试初始化​​一个对象是一种好习惯吗?