selenium-获取一组数组进行操作(七)

时间:2021-07-08 04:20:39

selenium-获取一组数组进行操作

  以  纵横中文网  中获取24小时畅销榜的书单为例

  此文仅做 selenium 在自动化测试中怎么获取一组数据进行说明,不做网络爬虫解释

  当然,使用爬虫得到本文的结果会简单快捷的多

区别 selenium 中的 elements 与 element

  例如:list.find_elements_by_class_name('rank_i_bname')  # 获得 class name 为 rank_i_bname 的所有数据

     list.find_element_by_class_name('rank_i_p_tit') # # 获得 class name 为 rank_i_p_tit 的一个数据,如果有多个则只取第一个

步骤:

  使用 selenium 定位到总分类

  然后通过判断24小时畅销榜,进入到24小时畅销榜的书目录

  最后获得书名和作者

 

如下图

selenium-获取一组数组进行操作(七)

代码如下:

 #coding=utf-8

 from selenium import webdriver
import unittest class getListall(unittest.TestCase): def setUp(self): # 纵横小说中文网
base_url = 'http://book.zongheng.com/rank.html'
self.driver = webdriver.Chrome()
self.driver.implicitly_wait(10)
self.driver.get(base_url) def test_get_list_all(self):
u"""获取数组"""
driver = self.driver
# 获取所有分类
lists = driver.find_elements_by_class_name('rank_i_p_list')
for list in lists:
# 获取24小时畅销榜下的书
if list.find_element_by_class_name('rank_i_p_tit').text == "24小时畅销榜": # 获取书
names = list.find_elements_by_class_name('rank_i_bname')
authors = list.find_elements_by_class_name('rank_i_bcount') # 打印获取的数据
for name,author in zip(names,authors):
print(name.text + "," + author.text + ";") def tearDown(self):
self.driver.quit() if __name__ == '__main__':
unittest.main()

运行结果

selenium-获取一组数组进行操作(七)

结果分析

  分析结果会发现,第一个书单所获取的信息和其他的书单信息不一致

  原因:查看网页html便可知

  class=“rank_i_bname” 下的 text ,第一个书单和其他书单的信息是不一样的

    selenium-获取一组数组进行操作(七)

如果看起来不美观可以将第一个书单提取处理单独进行定位获取信息进行打印

    然后在 for 循环中将获取到的书单的第一个信息不要打印

    问题解决

selenium-获取一组数组进行操作(七)的更多相关文章

  1. NumPy 学习(2): 数组的操作

    1. 简单一维数组的操作 一维数组的操作类似于python自身的list类型. In [14]: arr = np.arange(10) In [15]: arr Out[15]: array([0, ...

  2. js对数组的操作函数

    js数组的操作 用 js有很久了,但都没有深究过js的数组形式.偶尔用用也就是简单的string.split(char).这段时间做的一个项目,用到数组的地方很多, 自以为js高手的自己居然无从下手, ...

  3. PHP数组的操作

    一.数组操作的基本函数数组的键名和值array_values($arr);获得数组的值array_keys($arr);获得数组的键名array_flip($arr);数组中的值与键名互换(如果有重复 ...

  4. js数组的操作及数组与字符串的相互转化

    数组与字符串的相互转化 <script type="text/javascript">var obj="new1abcdefg".replace(/ ...

  5. Js数组的操作push&comma;pop&comma;shift&comma;unshift等方法详细介绍

    js中针对数组操作的方法还是比较多的,今天突然想到来总结一下,也算是温故而知新吧.不过不会针对每个方法进行讲解,我只是选择其中的一些来讲. 首 先来讲一下push和pop方法,这两个方法只会对数组从尾 ...

  6. js 数组的操作

    js数组的操作 用 js有很久了,但都没有深究过js的数组形式.偶尔用用也就是简单的string.split(char).这段时间做的一个项目,用到数组的地方很多,自以为js高手的自己居然无从下手,一 ...

  7. Scala学习&lpar;三&rpar;----数组相关操作

    数组相关操作 摘要: 本篇主要学习如何在Scala中操作数组.Java和C++程序员通常会选用数组或近似的结构(比如数组列表或向量)来收集一组元素.在Scala中,我们的选择更多,不过现在我们先假定不 ...

  8. js数组的操作 Full

    js数组的操作 用 js有很久了,但都没有深究过js的数组形式.偶尔用用也就是简单的string.split(char).这段时间做的一个项目,用到数组的地方很多,自以为js高手的自己居然无从下手,一 ...

  9. JavaScript jQuery 中定义数组与操作及jquery数组操作

    首先给大家介绍javascript jquery中定义数组与操作的相关知识,具体内容如下所示: 1.认识数组 数组就是某类数据的集合,数据类型可以是整型.字符串.甚至是对象Javascript不支持多 ...

随机推荐

  1. Invalidate、RedrawWindow与UpdateWindow

    Invalidate.RedrawWindow与UpdateWindow的区别 Invalidate()是强制系统进行重画,但是不一定就马上进行重画.因为Invalidate()只是通知系统,此 时的 ...

  2. HTML5实现在线抓拍

    <!DOCTYPE> <html> <head> <meta http-equiv="Content-Type" content=&quo ...

  3. memcached分布式缓存

    1.memcached分布式简介 memcached虽然称为“分布式”缓存服务器,但服务器端并没有“分布式”功能.Memcache集群主机不能够相互通信传输数据,它的“分布式”是基于客户端的程序逻辑算 ...

  4. &lbrack; SSH框架 &rsqb; Struts2框架学习之二

    一.Struts2访问Servlet的API 前面已经对 Struts2的流程已经执行完成了,但是如果表单中有参数如何进行接收又或者我们需要向页面保存一些数据,又要如何完成呢?我们可以通过学习 Str ...

  5. Python爬取房产数据,在地图上展现!

    小伙伴,我又来了,这次我们写的是用python爬虫爬取乌鲁木齐的房产数据并展示在地图上,地图工具我用的是 BDP个人版-免费在线数据分析软件,数据可视化软件 ,这个可以导入csv或者excel数据. ...

  6. Scrapy中选择器的用法

    官方文档:https://doc.scrapy.org/en/latest/topics/selectors.html Using selectors Constructing selectors R ...

  7. day13 生成器 三元运算 列表解析

    本质上来说生成器迭代器都是一种数据类型,如果你直接打印生成器是无法得出值的,会得到一串内存地址,即一个对象想要得到生成器的值必须要用for或者next,list等来获取 生成器生成器就是一个可迭代对象 ...

  8. linux上搭建nginx

    安装包:(按顺序执行过去即可,重复无所谓)c++编译环境 yum install gcc-c++ 安装pcre yum -y install pcre-devel 安装openssl yum -y i ...

  9. 两步完成利用procdump64&plus;mimikatz获取win用户密码

    使用procdump64+mimikatz可实现从内存中获取明文密码 工具 链接:https://pan.baidu.com/s/1gNc9qLcNSNBohIVrAiqShw 密码:fc38 首先得 ...

  10. JUC-ReadWriteLock

    ReadWriteLock 维护了一对相关的锁,一个用于只读操作,另一个用于写入操作.只要没有 writer,读取锁可以由多个 reader 线程同时保持.写入锁是独占的. ReadWriteLock ...