首页 > 解决方案 > Python Selenium 通过 CSS 匹配文本获取元素

问题描述

嗨,我不知道如何通过 CSS 获取元素并与文本匹配。我知道它可以用 Xpath 完成,但我宁愿使用 CSS。

<div class="button-face">
  <div class="button-face-caption"> Text I want to find 1</div>
</div>
<div class="button-face">
  <div class="button-face-caption"> Text I want to find 2</div>
</div>

所以在 CSS 中会是这样的......

driver.find_element_by_css('div.button-face-caption')

但是如何添加文本匹配呢?我试过了containsinnerText但似乎都没有。

标签: pythonseleniumselenium-webdrivercss-selectorswebdriver

解决方案


作为解决方法,您可以创建自己的函数

def find_by_css(selector, text=''):
    return [element for element in driver.find_elements_by_css_selector(selector) if text in element.text][0]

然后你可以称它为

find_by_css('div.button-face-caption')  # search only by CSS-selector

或者

find_by_css('div.button-face-caption', 'Text I want to find 2')  # search by CSS + text

推荐阅读