python - 提取 div 文本时文本值为空
问题描述
我试图提取文本 "Quesadilla" ,但是当我尝试获取文本时它是空的。
试图从以下内容中提取的 HTML:
<div data-baseweb="block" data-testid="menu-item-name" class="d0 bd ib ic id ie be ed f7 bh fz if">
<div lines="2" class="ig ih ii bq">Quesadilla</div></div>
</div>
代码:
menuItemNames = driver.find_elements_by_xpath("//div[@data-testid='menu-item-name']")
for menuItemName in menuItemNames:
print(menuItemName.text)
有一个更好的方法吗?当我使用上面的代码获取文本时,我得到了一些 div 的值,而另一些则返回空或 null
解决方案
尝试通过显式等待引入 CSS_SELECTOR 以获得更高的可靠性:
CSS 选择器:
div[data-testid='menu-item-name'] div
带有显式等待的代码:
driver = webdriver.Chrome("C:\\Users\\etc\\Desktop\\Selenium+Python\\chromedriver.exe")
driver.maximize_window()
wait = WebDriverWait(driver, 30)
driver.get("Your URL")
ele = wait.until(EC.element_to_be_clickable((By.CSS_SELECTOR, "div[data-testid='menu-item-name'] div "))).text
print(ele)
如果此 div 中有 10 个元素,div[data-testid='menu-item-name']
您可以正确尝试使用 css 选择器,如下所示:
elements = driver.find_elements(By.CSS_SELECTOR, "div[data-testid='menu-item-name']")
for ele in elements:
print(ele.text)
在此处了解有关显式等待的更多信息
推荐阅读
- c# - Unity3D C#的局域网通信
- javascript - 为什么我的 Node 代码不能使用“Promises”同时执行?
- null - 可选项与空安全类型?
- algorithm - 使用 Redis HyperLogLog 计算每页过去 60 分钟内的唯一用户数
- django - 如何使用 Wagtail App Pages 从 django 模型创建动态页面?
- graphql - GraphQL Apollo 移除悬空引用
- python-3.x - 如何在python中旋转3D文本?
- vba - 如何将文本从 Word 文档复制到 PowerPoint 并进行演示
- javascript - 滚动页面时如何删除活动类
- php - 攻击联系表