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)的元素?原则上它听起来很容易,但可能是这样,但我有一段时间试图解决这个问题.任何建议将不胜感激,谢谢.
您可以使用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)
如果,例如,keyword1
会hello
和keyword2
会world
中,expression
会成为:
//*[contains(., 'hello') or contains(., 'world')]
Run Code Online (Sandbox Code Playgroud)
如果您还要同时处理大小写,则需要使用translate()
,请参阅此相关主题中的更多信息: