我正在Java Selenium中运行测试,在其中找到一个元素,一旦发现需要找到前一个元素。代码必须是动态的,因为我不知道我从哪个元素开始是5中的第3个,10中的第6个或2中的第1个。
问题是,使用xpath中的previous-sibling,我得到了所有在找到的元素之前的元素,而不是紧接在它之前的元素。例如,这是我的xml:
<div>
<input formcontrolname="myValues" id="value1" type="radio" value="VALUE1" />
<label for="value1">Value 1</label>
<input formcontrolname="myValues" id="value2" type="radio" value="VALUE2" />
<label for="value2">Value 2</label>
</div>
可以说我找到了“值2”标签作为WebElement,然后接下来要做的就是找到紧接该标签之前的特定输入(id ='value2')。由于它必须与我找到的标签有关,因此我不能仅通过该ID进行查找;我真的不知道id,只是输入应该在标签之前。我以为我可以用这个:
WebElement input = element.findElement(By.xpath("preceding-sibling::input"));
但是该xpath实际上返回了所有作为标签的同级的输入。因此,在示例中,我得到了一个包含两个输入的数组,分别是'value1'和'value2'。Selenium将输入的值设置为id ='value1'的输入,它是返回数组中的第一个。
所以我的问题是,是否存在一个xpath可以返回紧接给定元素之前的一个元素?
您可以通过指定索引来获得所需的结果:
./preceding-sibling::input[1]
在这种情况下,您将获得类型的第一个(立即)在前同级 "input"
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句