如何通过多个文本字符串查找元素?

时间:2016-04-27 18:32:49

标签: python python-2.7 selenium xpath selenium-webdriver

我很好奇是否有办法通过多个"关键字"使用Selenium和Python 2.7找到元素。以任何顺序。请允许我用一个例子来解释:

keyword1 = raw_input("Keyword: ").lower().title()
keyword2 = raw_input("Keyword: ").lower().title()

    try :
        clickOnProduct = "driver.find_element_by_xpath(\"//*[contains(text(), '" + keyword1 + "')]\").click()"
        exec(clickOnProduct)

这只是代码的一小部分,但我如何将其合并以查找包含这两个关键字( keyword1,keyword2 )的元素?原则上它听起来很容易,但可能是这样,但我有一段时间试图得到这个。非常感谢任何建议,谢谢。

1 个答案:

答案 0 :(得分:8)

您可以使用orcontains()动态构建XPath表达式:

keywords = [keyword1, keyword2, ... ]
conditions = " or ".join(["contains(., '%s')" % keyword for keyword in keywords])
expression = "//*[%s]" % conditions

elm = driver.find_element_by_xpath(expression)

例如,如果keyword1hellokeyword2world,则expression将成为:

//*[contains(., 'hello') or contains(., 'world')]

如果您还要同时处理大写和大写,您需要使用translate(),请参阅此相关主题中的更多内容: