我正在尝试使用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/