python selenium操作表格式元素实例
很多时候,网页上的布局都是表格形式的,如出下面这样的

这种网页类型在自动化中比较头痛,需要很多判断,下面就举个例子,这里以深圳出入境网页为例,http://yysl.sz3e.com/wsyysq/select_sldw_zbs.jsp
比如我们需要点击某个星期六的任意一个可以预约的时段,该怎么写呢。
首先我们要分析,这也是写程序的第一步,将手工操作进行逻辑提取,再形成程序
1、先判断列表中的日期,找到星期六的列
2、再从找到的列中判断可预约的时间点
基本思路就是这样,来看第一点,怎么提取表格式的日期时间呢?
使用firepath看看

所以可以用current找到所有的id,xpath://label[@class='current']
接下来怎么把一列数据找出来呢?
从html中可以看到这是一个标准的w3c 表格形式

可以使用以下方式将一列数据定位出来
//tbody[@id='timeline']/tr/td[1] 其中1表示第1列,可根据需要拿出对应的列
因次,基本的代码如下:
all_data=browser.find_elements(By.XPATH, "//label[@class='current']") #把所有日期元素对像选取出来 rowall=[rowall.text for rowall in all_data] #把对应的日期元素取出 rowindex=[rowall.index(i) for i in rowall if u'星期六' in i] #获取列 '''
判断周六是否可预约,没有隔2s刷新
'''
while True:
tds=browser.find_elements(By.XPATH,"//tbody[@id='timeline']/tr/td[%d]" % (rowindex[0]+1))
if [td for td in tds if "可预约" in td.text]:break
else:
browser.find_element_by_xpath("//span[@receivepointsid='440307000000']").click()
time.sleep(2) .....
python selenium操作表格式元素实例的更多相关文章
- 【selenium学习笔记一】python + selenium定位页面元素的办法。
1.什么是Selenium,为什么web测试,大家都用它? Selenium设计初衷就是为web项目的验收测试再开发.内核使用的是javaScript语言编写,几乎支持所以能运行javaScript的 ...
- Python +selenium之设置元素等待
注:本文转载http://www.cnblogs.com/mengyu/p/6972968.html 当浏览器在加载页面时,页面上的元素可能并不是同时被加载完成,这给元素的定位增加了困难.如果因为在加 ...
- python + selenium定位页面元素的办法
1.什么是Selenium,为什么web测试,大家都用它? Selenium设计初衷就是为web项目的验收测试再开发.内核使用的是javaScript语言编写,几乎支持所以能运行javaScript的 ...
- Python + Selenium 上传元素为button类型的文件的解决办法
工具:winspy Python所需安装模块:pywin32 (安装语句:pip install -i https://pypi.douban.com/simple pywin32) 元素位置: 对应 ...
- python+selenium页面自动化 元素定位实际遇到的各种问题(持续更新)
1.class属性有空格 (已验证) 当classname 中存在空格的时候,直接使用find_element_by_class_name时,会显示定位失败,此时,需要将classname中的空格替 ...
- python selenium截取指定元素图片
1.截取当前屏幕 @property def getImage(self): ''' 截取图片,并保存在images文件夹 :return: 无 ''' timestrmap = time.strft ...
- python selenium中等待元素出现及等待元素消失操作
在自动化测试中,很多时候都会有等待页面某个元素出现后能进行下一步操作,或者列表中显示加载,直到加载完成后才进行下一步操作,但时间都不确定,如下图所示 幸运的是,在selenium 2后有一个模块exp ...
- python+selenium 定位隐藏元素
定位隐藏要素的原理:页面主要通过“display:none”来控制元素不可见.所以我们需要通过javaScript修改display的值得值为display="block,来实现元素定位的. ...
- Python+selenium定位一组元素,复选框
随机推荐
- HOStringSense大段字符串检测器
下载地址:https://github.com/holtwick/HOStringSense-for-Xcode 修改HOStringSense.xcodeproj工程里的HOStringHelper ...
- 【Postgresql】set up
https://www.howtoforge.com/tutorial/ubuntu-postgresql-installation/ https://linux.cn/article-6770-1. ...
- Android : Your APK does not seem to be designed for tablets.
1. 解决办法: Add these config in AndroidManifest.xml <supports-screens android:smallScreens="tru ...
- QT QTransform与QMatrix 有啥区别?
刚开始学习QT,我使用的是QT5.12进行开发,要不时地查阅QT的官方帮助文档~ 仔细阅读QT官方帮助QTransform类以及QMatrix类,发现两个类的作用描述一模一样(“The QTransf ...
- [转]总结使用Unity 3D优化游戏运行性能的经验
转载自:http://www.gameres.com/msg_221889.html 作者:Amir Fasshihi 流畅的游戏玩法来自流畅的帧率,而我们即将推出的动作平台游戏<Shadow ...
- grid网格的流动grid-auto-flow属性
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- pgpool-II 的使用
1.pgpool-II的概念 pgpool-II 是一个位于 PostgreSQL 服务器和 PostgreSQL 数据库客户端之间的中间件,它提供以下功能: 连接池 pgpool-II 保持已经连接 ...
- 基于github+hexo搭建个人博客(window)
0x01 环境搭建 1.Node.js环境 下载Node.js安装文件:https://nodejs.org/en/download/ 根据系统选择相应安装包下载,安装过程一路Next,默认设置即可. ...
- 【RF库XML测试】通过xpath查找元素的说明
Tag names:当仅使用1个tag的时候,xpath匹配具有该标签名称的所有直接子元素. Paths:通过/符号连接tag名称,例如second/child将匹配父元素second下所有的chil ...
- Create maintenance backup plan in SQL Server 2008 R2 using the wizard
You will need to identify how you want your maintenance plan to be setup. In this example the mainte ...