Python:使用 Selenium 的 xpath 中的正则表达式

har*_*814 6 python selenium xpath

我尝试使用 Python 和 Selenium 获取某些 HTML 标签的 id。有html代码:

<tr id="10">
    <td colspan="5">
        <div class="card-view">       
            <span class="value">PROVIDER_628_54678931</span>
        </div>
    </td>
</tr>

<tr id="11">
    <td colspan="5">
        <div class="card-view">       
            <span class="value">PROVIDER_629_54678932</span>
        </div>
    </td>
</tr>


<tr id="12">
    <td colspan="5">
        <div class="card-view">       
            <span class="value">PROVIDER_730_54678933</span>
        </div>
    </td>
</tr>


<tr id="13">
    <td colspan="5">
        <div class="card-view">       
            <span class="value">PROVIDER_6542_54678934</span>
        </div>
    </td>
</tr>
Run Code Online (Sandbox Code Playgroud)

对于仅提取一个父标签的 id,我这样做:

elem = browser.find_element_by_xpath("//span[contains(@class, 'value') and text()='PROVIDER_628_54678931']")
parent = elem.find_element_by_xpath('../../..')
print(parent.get_attribute("id"))
Run Code Online (Sandbox Code Playgroud)

如何在 XPath 中使用正则表达式来获取“span”元素的父 id-s,其中文本包含“PROVIDER_6XX”,但不包含“PROVIDER_7”和 PROVIDER_6542?

har*_*814 4

我在这里找到了解决方案:链接

def findTrunksByRegExp():
    pattern = re.compile(r"PROVIDER_6\d{2}")
    elements = browser.find_elements_by_xpath("//span[contains(@class, 'value')]")
    for element in elements:
        match = pattern.match(element.text)
        if match:
            parent = element.find_element_by_xpath('../../..')
            print(parent.get_attribute("id"))
Run Code Online (Sandbox Code Playgroud)