在类方法中定义多个父xpath

时间:2017-01-17 16:24:31

标签: python selenium xpath

我在 init 中定义了两个父XPath,如下所示:

<body>
  <p>Your content goes here</p>  
</body>

但我处于必须使用三个父xpath的情况。父xpath根据页面而不同。但是每个页面都没有全部三个xpath。它只有一个父xpath。

我知道我可以使用try,但是有两个或更多父xpath使得难以维护代码并使其变得混乱。有什么建议吗?

1 个答案:

答案 0 :(得分:1)

解决它的一种方法是使用“|”连接XPath表达式 (表示“或”)运营商:

def __init__(self, driver, fieldName):
    self.driver = driver

    expressions = [
        "//form[@name='quickeditfrm']//tr/th/label[text()='%s']" % fieldName,
        QuickEditLocatars.ROWPARENT % fieldName,
        QuickEditLocatars.ROWPARENT % (fieldName + ":"),
        "//form[@name='quickeditfrm']//tr/th/label[text()='%s']" % (fieldName + ":")
    ]
    self.text = self.driver.find_element_by_xpath(" | ".join(expressions)

当任何表达式找不到元素时,您可能需要添加一个try / except来处理“负面”情况。