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

Dan*_*son 4 python selenium xpath python-2.7 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)
Run Code Online (Sandbox Code Playgroud)

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

ale*_*cxe 8

您可以使用or和动态构造XPath表达式contains():

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

elm = driver.find_element_by_xpath(expression)
Run Code Online (Sandbox Code Playgroud)

如果,例如,keyword1hellokeyword2world中,expression会成为:

//*[contains(., 'hello') or contains(., 'world')]
Run Code Online (Sandbox Code Playgroud)

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