python - 使用 python selenium 获取标签的子节点数
问题描述
我试图计算某个 div 标签拥有的孩子的数量。我已经以不同的方式来做这件事,但没有一个成功。通过期待元素,我发现我希望计算其子元素的元素的 xpath 如下:
//*[@id="myShipments"]/div[1]/div/div/div[2]
该元素当前有 25 个以下类型的子元素:
//*[@id="myShipments"]/div[1]/div/div/div[2]/div[0]
//*[@id="myShipments"]/div[1]/div/div/div[2]/div[1]
//*[@id="myShipments"]/div[1]/div/div/div[2]/div[2]
...
使用 find_elements_by_xpath 函数我做了以下
numberOfChildren = driver.find_elements_by_xpath('//*[@id="myShipments"]/div[1]/div/div/div[2]') // sets it to 1
numberOfChildren = driver.find_elements_by_xpath('//*[@id="myShipments"]/div[1]/div/div/div[2]//*') // sets it to 541, I assume it also counts the children of the children
numberOfChildren = driver.find_elements_by_xpath('//*[@id="myShipments"]/div[1]/div/div/div[2]/div[0-9]') // sets it to 0, I assume the last div is incorrect
这是表格的完整 HMTL:https ://codeshare.io/5wJ0Vp
这是简化版:
如何计算父 div(myShimpents__shipmentsTable--tableBody div)拥有的子项(shipmentsTable__tableBody--row div)的数量?是否可以使用正则表达式来获取 xpath 中最后一个 div 的所有 div,如果可以,如何?
解决方案
试试下面的方法。
使用CSS 选择器:
driver.find_elements_by_css_selector('div.myShipments__shipmentsTable--tableBody div.shipmentsTable__tableBody--row')
使用xpath:
driver.find_elements_by_xpath('//div[@class="myShipments__shipmentsTable--tableBody"]//div[@class="shipmentsTable__tableBody--row"]')
推荐阅读
- ruby-on-rails - Cocoon:更新时如何隐藏某个列
- scala - Scala XML 提取逗号分隔符中的元素
- ios - 为什么我的按钮在 Swift Playgrounds 中不起作用?
- swift - 调整 UIImage 大小在 Swift 中保持图像质量
- google-bigquery - 处理卡在步骤 WriteSuccessfulRecords ... 使用模板 Pub/Sub -> BigQuery 时
- javascript - 保持 requestanimationframe 在选项卡开关上运行
- javascript - 使用 Cheerio 获取元素内部的元素
- c - 在 C 中显示文件内容 - 写访问错误
- python - raise NoReverseMatch(msg) django.urls.exceptions.NoReverseMatch: Reverse for 'login
- sql - pgSQL FULL OUTER JOIN 'WHERE' 条件