我正在尝试编写一个函数,它从 html 的任何嵌套级别返回一个元素列表,其中文本中包含单词“products”,不区分大小写。
这是我的功能:
def __find_elements(driver):
return driver.find_elements(By.XPATH,
"//*[contains(translate(descendant::text(), "
"'ABCDEFGHIJKLMNOPQRSTUVWXYZ', "
"'abcdefghijklmnopqrstuvwxyz'), "
"'products')]")
; 由于某种原因,处理这部分 HTML
<a class="nav-link main-navigation-link" href="https://www.leuze.com/en-int/products" itemprop="url" data-flyout-menu-trigger="e3e2319128d6464d8a025ac00823ce4e" title="Products">
<div class="main-navigation-link-text"\>
<span itemprop="name"\>Products\</span\>
</div\>
</a\>
, 该函数返回 [] 而不是列表,其中包含以下 span 元素:
<span itemprop="name">Products</span>
.
问题: 您能否澄清一下,如何修改函数以返回包含上述 span 元素的列表,同时处理 HTML 部分?
预计: 包含元素的列表
<span itemprop="name">Products</span>
实际发生的事情: 空列表
试试这个:
elements = driver.find_elements_by_xpath("//span[@itemprop='name']")
这将获取跨度内具有 itemprop='name' 的所有元素