python - 无法获取元素的文本。我想在这里使用动态xpath来获取标题元素的文本
问题描述
这是HTML。我想在这里使用动态 xpath 来获取标题元素的文本。
<div class="w3-bar w3-theme w3-card-2 w3-wide notranslate">
<a class="w3-bar-item w3-button w3-hover-white w3-padding-16 hidesm" onclick="w3_open()" href="javascript:void(0)">
<a id="navbtn_tutorials" class="w3-bar-item w3-button barex w3-hover-white w3-padding-16" onclick="w3_open_nav('tutorials')" href="javascript:void(0)">
TUTORIALS
<i class="fa fa-caret-down"></i>
<i class="fa fa-caret-up" style="display:none"></i>
</a>
hElements = "//div[@class='w3-bar w3-theme w3-card-2 w3-wide notranslate']//a"
#is my xpath fetches all the header elements
hElementsSize = len(browser.driver.find_elements_by_xpath(hElements))
#fetches the size of the header elements
print("Total Header Elements:", hElementsSize)
hElementsText = browser.driver.find_element_by_xpath(hElements).text
print(hElementsText)
#i'm not able to get the text of the header elements
解决方案
您期望使用文本的方式browser.driver.find_element_by_xpath
将返回第一个元素的文本,正如我在您共享的 HTML 中看到的那样,该文本是空的。findElement
如果存在多个元素,则定位 DOM 中的第一个元素。
需要使用find_elements
并循环检查预期的
hElements = "//div[@class='w3-bar w3-theme w3-card-2 w3-wide notranslate']//a"
listOfElement = driver.find_elements_by_xpath(hElements)
print("Total Header Elements:", len(listOfElement))
for element in listOfElement:
print(element.text)
推荐阅读
- volatility - Volatility 插件问题(distorm3 未定义)
- javascript - 如何在电子邮件正文中发送日志
- gdscript - 如何制作一款MOBA游戏控件?
- android - 将 Firebase 连接到项目时出错
- javascript - 如何获取对象的密钥
- java - Spring Data JPA:通过 json 属性查找
- verilog - 如何在 Verilog 中使用交换 32 位?示例:(位 0 复制到位置 31 位 31 复制到位置 0)
- python - 如何在 GPU 上安装 tensorflow-compression?
- vue.js - 我们可以在没有 SSR 的情况下使用 vue-meta 吗?
- javascript - 使用手机相机拍照