python-3.x - 如何使用 Selenium 从一个 div 获取两个 span 的文本字段?
问题描述
我有这样的html:
<div class="event__scores fontBold">
<span>1</span>
-
<span>2</span>
</div>
我发现这个元素如下:
current_score = match.find_element(By.XPATH, '//div[contains(@class, "event__scores")]')
print(current_score.get_attribute('innerHTML'))
1 - 2
如果不使用 bs4 或类似的东西,我无法理解我需要做什么才能获得类似的文本。我知道我可以像这样使用 bs4:
spans = soup.find_all('span')
result = ' - '.join([e.get_text() for e in spans])
但我想知道我能否仅使用 Selenium 获得类似的结果。
解决方案
考虑使用显式等待,而不是
find
因为在您尝试查找元素时可能尚未加载元素。查看How to use Selenium to test web applications using AJAX 技术文章了解更多详情current_score = WebDriverWait(driver, 10).until( EC.presence_of_element_located((By.ID, '//div[contains(@class, "event__scores")]')))
您正在寻找错误的属性,您应该使用
innerText
,而不是innerHTML
print(current_score.get_attribute('innerText'))
或者只是检索WebElement.text属性
print(current_score.text)
推荐阅读
- apache - Apache htaccess 缓存
- amazon-s3 - 日期为“通配符参数”的 aws cp 文件
- azure - Azure AD B2C 'newUser' 和 'auth_time' 声明生命周期
- php - 无法在 wamp64 中使用 mail() 或 phpmailer 通过 php 发送邮件
- javascript - 在流星 js 中显示来自 mongodb 的 Summernote 内容时出错
- java - AbstractHttpMessageConverter 中的 readInternal 和 read 有什么区别?
- c# - ASP.NET MVC 在 Windows 身份验证中覆盖用户
- node.js - Node.js:为什么 Braintree 方法通过错误响应来解决 promise?
- bash - 在 bash 中遍历所有扩展名为 .txt 的文件
- azure - 为 Azure VM 中托管的 Web 应用程序禁用匿名身份验证