在Python中使用Selenium webdriver基于文本搜索元素

在Python中使用Selenium webdriver基于文本搜索元素,python,python-3.x,selenium,selenium-webdriver,webdriver,Python,Python 3.x,Selenium,Selenium Webdriver,Webdriver,我试图创建一个程序,点击包含某个单词的框,但是所有框周围都有其他单词 例如,该网站有一堆食谱,但我只想要那些包含“汤”一词的。所以它需要能够点击文本,上面写着“番茄汤”、“美味汤”、“其他汤类汤”等等 我找到这条线了 WebDriverWait(driver,10)。直到(预期的条件。元素可单击((By.XPATH,//span[text()='Soup'])。单击() 这是伟大的,但只有当你把确切的文本。 例如,WebDriverWait(driver,10)。直到(预期的条件。元素可单击((

我试图创建一个程序,点击包含某个单词的框,但是所有框周围都有其他单词

例如,该网站有一堆食谱,但我只想要那些包含“汤”一词的。所以它需要能够点击文本,上面写着“番茄汤”、“美味汤”、“其他汤类汤”等等

我找到这条线了

WebDriverWait(driver,10)。直到(预期的条件。元素可单击((By.XPATH,//span[text()='Soup'])。单击()

这是伟大的,但只有当你把确切的文本。 例如,
WebDriverWait(driver,10)。直到(预期的条件。元素可单击((By.XPATH,//span[text()='Tomato Soup'))。单击()


如果有人知道如何进行更松散的查找,那将是一个很大的帮助。谢谢。

如果您使用的是XPath 2.0,您可以使用正则表达式,因此请查找包含
Soup
的所有内容

//*[matches(@id, '.*Soup.*')]
也许可以看看

更新

browser=webdriver.Chrome()
browser.get(“https://www.allrecipes.com/search/results/?wt=Soup&sort=re&page=10")
elems=browser.find_elements_by_xpath(//span[contains(text(),'Soup')]))
对于元素中的元素[:2]:
打印(元素文本)

这是否适用于span text和python,因为我无法访问它。我还没有尝试过。你能链接一个你正在使用的示例网站吗?因此你正在迭代所有页面以查找汤?我注意到也存在动态加载。为什么不使用像这样的搜索功能来检索这些食谱?目的是保存所有的li吗是否链接到汤食谱?不,我只是想找到包含“汤”的标题,然后单击它并打开该页面尝试此
elems=browser。通过xpath(“//span[contains(text(),'Soup')]”查找元素