selenium + python 获取table数据的示例讲解
作者:hh-glimmer 发布时间:2021-02-20 11:57:46
标签:selenium,python
方法一:
<code class="language-python">"""
根据table的id属性和table中的某一个元素定位其在table中的位置
table包括表头,位置坐标都是从1开始算
tableId:table的id属性
queryContent:需要确定位置的内容
"""
def get_table_content(tableId,queryContent):
arr = []
arr1 = []
table_loc = (By.ID,tableId)
# 按行查询表格的数据,取出的数据是一整行,按空格分隔每一列的数据
table_tr_list = driver.find_element(*table_loc).find_elements(By.TAG_NAME, "tr")
for tr in table_tr_list:
arr1 = (tr.text).split(" ") #以空格拆分成若干个(个数与列的个数相同)一维列表
# print(tr.text)
# print(arr1)
arr.append(arr1) #将表格数据组成二维的列表
#循环遍历table数据,确定查询数据的位置
for i in range(len(arr)):
for j in range(len(arr[i])):
if queryContent== arr[i][j]:
print("%r坐标为(%r,%r)" %(queryContent,i+1,j+1))
get_table_content("myTable","第二行第二列")</code>
方法二:
"""
根据table的id属性和table中的某一个元素定位其在table中的位置
table包括表头,位置坐标都是从1开始算
tableId:table的id属性
queryContent:需要确定位置的内容
"""
def get_table_content(tableId,queryContent):
# 按行查询表格的数据,取出的数据是一整行,按空格分隔每一列的数据
table_tr_list = driver.find_element(By.ID, tableId).find_elements(By.TAG_NAME, "tr")
table_list = [] #存放table数据
for tr in table_tr_list: #遍历每一个tr
#将每一个tr的数据根据td查询出来,返回结果为list对象
table_td_list = tr.find_elements(By.TAG_NAME, "td")
row_list = []
print(table_td_list)
for td in table_td_list: #遍历每一个td
row_list.append(td.text) #取出表格的数据,并放入行列表里
table_list.append(row_list)
# 循环遍历table数据,确定查询数据的位置
for i in range(len(table_list)):
for j in range(len(table_list[i])):
if queryContent== table_list[i][j]:
print("%r坐标为(%r,%r)" %(queryContent,i+1,j+1))
get_table_content("myTable","第二行第二列")
方法三:
"""
根据CSS选择器和table中的某一个元素定位其在table中的位置
table包括表头,位置坐标都是从1开始算
cssSelector:table的CSS选择器属性
queryContent:需要确定位置的内容
"""
def get_table_content(cssSelector,queryContent):
locator = cssSelector + ">tbody>tr"
table_list = []
table_tr_list = driver.find_elements(By.CSS_SELECTOR, locator)[1:] #去掉表头
for tr in table_tr_list:
row_list = []
table_td_list = tr.find_elements(By.TAG_NAME,"td")
for td in table_td_list:
row_list.append(td.text)
table_list.append(row_list)
for i in range(len(table_list)):
for j in range(len(table_list[i])):
if queryContent== table_list[i][j]:
print("%r坐标为(%r,%r)" %(queryContent,i+1,j+1))
get_table_content("#myTable","第二行第二列")
来源:https://blog.csdn.net/huayuhuan/article/details/76559465


猜你喜欢
- I. Strict Mode阐述根据 mysql5.0以上版本 strict mode (STRICT_TRANS_TABLES) 的限制:
- 如下所示:#!/usr/bin/env pythonimport osimport sysclass CConsole: M_MAP_COL
- 我们可以通过 asyncio.wait() 函数等待异步任务完成。可以等待不同的条件,例如所有任务完成、第一个任务完成以及第一个任务因异常而
- 同质化的网站越来越多,往往你还没发展起来,就已有许多站点抄袭走了你的成果,如何留下用户?——让用户有更好的使用体验。一些网页上的小技巧,可以
- 概述Vue 在插入、更新或者移除 DOM 时,提供多种不同方式的应用过渡效果。包括以下工具:在 CSS 过渡和动画中自动应用 class可以
- vue中最常见的属v-model这个数据双向绑定了,很好奇它是如何实现的呢?尝试着用原生的JS去实现一下。首先大致学习了解下Object.d
- VScode编辑器在安装好Python插件之后会自动选择环境变量中排序最高的那一个解释器作为默认解释器,而想要额外添加新的Python解释器
- 前言本文实现一个 Python 脚本,用来批量卸载模拟器或者实体机上面的 App 以及清除 LogCat 缓存。开发 Android 的朋友
- 实验发现,tensorflow的tensor张量的shape不支持直接作为tf.max_pool的参数,比如下面这种情况(一个错误的示范):
- 1. Neovim是什么在此之前,我一直都是使用VSCODE或者WEB STORM编辑器的. 他们确实好用方便. 直到我得了腱鞘炎之后. 不
- 示意图:python双向链表实现代码:#!/usr/bin/python# -*- coding: utf-8 -*-class Node(
- 本文实例为大家分享了python实现批处理文件的具体代码,供大家参考,具体内容如下Windows下的bat, linux 下的shell 用
- MySQL查询语句大家都在用,但是应该如何设计高效合理的MySQL查询语句呢?下面就教您MySQL查询语句的合理设计方法,分享给大家学习学习
- 图像特征-SIFT尺度不变特征变换1.1图像尺度空间在一定的范围内,无论物体是大还是小,人眼都可以分辨出来,然后计算机要具有相同的能力却很难
- 本文实例讲述了php版本CKEditor 4和CKFinder安装及配置方法。分享给大家供大家参考,具体如下:下载并解压CKEditor 4
- 一个很棒的 blog 文章,是 PPK 两年前写的,文章中解释了 contains() 和 compareDocumentPosition(
- 目录1. 什么是turtle2. turtle例子3. 其他turtle功能4. 更多的例子5. 总结6. 参考资料1. 什么是turtle
- //图片上传<SCRIPT RUNAT=SERVER LANGUAGE=VBSCRIPT> Function GetUpload
- 之前修改两张及以上表的时候,总得需要用几次语句才修改,万一其中一条没修改上,又没事务机制的话,处理很麻烦,于是想到能不能一条语句完成呢? 结
- 我认为多选列表具有完美的功能——只需按下Ctrl键,同时点击鼠标从列表中选择多个项目。以下是一个典型的多选列表框: 上面那个列表框