硒:复杂的XPath示例

时间:2019-01-30 15:24:01

标签: python selenium xpath

我需要在Selenium代码中找到带有XPath的节点以实现自动化。 问题在于需要选择的节点不包含用于标识的信息,但是作为目标节点的父节点后代的另一个节点却包含。

<object>...</object>

<object>
    <div>Name</div>
    <target></target>
</object>

<object>...</object>

为简化这种情况,它看起来像上面的那样。有多个“对象”节点,只能通过“名称”加以区分。虽然我们无法在XPath中使用括号,但如何使用driver.find_element_by_xpath()方法选择该节点?

2 个答案:

答案 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')