我需要在Selenium代码中找到带有XPath的节点以实现自动化。 问题在于需要选择的节点不包含用于标识的信息,但是作为目标节点的父节点后代的另一个节点却包含。
<object>...</object>
<object>
<div>Name</div>
<target></target>
</object>
<object>...</object>
为简化这种情况,它看起来像上面的那样。有多个“对象”节点,只能通过“名称”加以区分。虽然我们无法在XPath中使用括号,但如何使用driver.find_element_by_xpath()
方法选择该节点?
答案 0 :(得分:2)
如果我正确理解了您的问题,则可能是您正在寻找以下XPath表达式:
//div[text()="Name"]/../target
这实际上是针对文本内容为div
的{{1}},并以Name
升级到其父项,然后选择节点类型为..
的子项。
如果target
节点不是父节点的直接子节点,则以下内容将查找在任何深度都是父节点的后代的target
节点(请注意,唯一的区别是现在有两个target
前面的斜线:
target
答案 1 :(得分:1)
如果您想执行泛型函数并希望每次都传递参数。请尝试此操作。
def fxpath(varstring):
Xpathelement = "//div[text()='{}']/../target".format(varstring)
driver.find_element_by_xpath(Xpathelement)
fxpath('Name')