Airtest-Selenium实操小课④:微信读书上阅读书籍
1. 前言
2.需求分析和准备
-
打开chrome浏览器 -
打开百度网页 -
搜索“微信读书” -
点击进入“微信读书”官网 -
搜索关键词“长安的荔枝” -
点击进入“长安的荔枝”书本 -
翻阅书籍前五章内容
3. 脚本实现与运行效果
3.1 脚本运行效果
3.2 完整代码分享
# -*- encoding=utf8 -*-
__author__ = "Airtest"
from airtest.core.api import *
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from airtest_selenium.proxy import WebChrome
from selenium.webdriver.common.by import By
# 创建一个实例
driver = WebChrome()
driver.implicitly_wait(20)
def start_selenium():
driver.get("https://www.baidu.com/")
# 输入搜索关键词并提交搜索
search_box = driver.find_element_by_name('wd')
search_box.send_keys('微信读书')
search_box.submit()
# 获取搜索结果并打开新页面
open_new_page()
# 滚动页面并阅读章节
read_chapters()
def open_new_page():
# 使用XPath查找文本为 "微信读书" 的元素并点击
try:
element = driver.find_element_by_xpath("//div[@id='content_left']/div[@id='1']/div[@class='c-container']/div[1]/h3[@class='c-title t t tts-title']/a")
except Exception as e:
element = driver.find_element_by_xpath('//*/text()[normalize-space()="微信读书"]/parent::*')
element.click()
# 获取所有窗口句柄
window_handles = driver.window_handles
# 切换到新打开的窗口
driver.switch_to.window(window_handles[1])
# 获取新页面的链接
new_page_url = driver.current_url
# 打印新页面的链接
print(f"新页面的链接: {new_page_url}")
driver.get(new_page_url)
#点击搜索书籍《长安的荔枝》
driver.find_element_by_xpath("//input[@type='text']").click()
driver.find_element_by_xpath("/html/body/div[7]/div/div/div[2]/div/input").send_keys("长安的荔枝")
driver.find_element_by_xpath("/html/body/div[7]/div/div/div[2]/span[2]").click()
# 获取a标签的URL以及书籍简介
search_box = driver.find_element_by_xpath("/html/body/div[7]/div/div[3]/div/ul/li/a")
print(f"a标签的文本: {search_box.text}")
url = search_box.get_attribute('href')
# 打印URL
print(f"URL: {url}")
driver.get(url) # 请求搜索链接-跳转
#开始阅读
def read_chapters():
#切换上下滚动阅读模式
button = driver.find_element(By.CSS_SELECTOR,"button[title='切换到上下滚动阅读'].readerControls_item.isHorizontalReader")
button.click()
for i in range(5): # 阅读章节5章
# 滚动到页面最下方
scroll_to_bottom()
sleep(5)
# 点击下一章节按钮
next_chapter = driver.find_element(By.XPATH,"//div[@class='readerFooter']/div/button[@class='readerFooter_button']")
next_chapter.click()
#滑动书籍
def scroll_to_bottom():
while True:
is_bottom = driver.execute_script('return (window.innerHeight + window.pageYOffset) >= document.documentElement.scrollHeight;')
# 判断是否滚动到屏幕最底部
if not is_bottom:
# 获取页面高度
heig_ = driver.execute_script("return document.body.scrollHeight;")
# 获取当前页面底部距离顶部的距离
next_ = driver.execute_script("return (window.innerHeight + window.pageYOffset);")
# 计算滚动距离
p_num = heig_ / 1000
print(heig_ / 1000)
# 滚动到页面最下方
driver.execute_script(f"window.scrollTo(0, {p_num + next_});")
sleep(2)
else:
print('已滚动到屏幕最底部')
break
#管理 WebDriver 的生命周期
class SeleniumDriver:
def __enter__(self):
return driver
def __exit__(self, exc_type, exc_val, exc_tb):
pass
if __name__ == "__main__":
with SeleniumDriver():
start_selenium()
3.2 重要知识点
1)返回当前页面的文档在垂直方向上的高度
driver.execute_script("return document.body.scrollHeight;")
2)获取当前页面可见区域的高度和页面滚动距离
driver.execute_script("return (window.innerHeight + window.pageYOffset);")
driver.execute_script('return (window.innerHeight + window.pageYOffset) >= document.documentElement.scrollHeight;')
4)管理WebDriver的生命周期
exit
的时候直接 pass
处理,如果需要立即关闭浏览器的话,可以选择在 exit
函数内填入 driver.close()
class SeleniumDriver:
def __enter__(self):
return driver
def __exit__(self, exc_type, exc_val, exc_tb):
pass
4. 注意事项与小结
4.1 相关教程
4.2 课程小结
本文分享自微信公众号 - AirtestProject(AirtestProject)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
自动化测试小技巧之Airtest-Selenium和Excel的无缝协作
👆对私有云感兴趣可以进入公众号回复“私有云”哦。 一、前言 之前在问卷以及Q群上有同学有提出过能否将网页上的一些数据通过 Airtest 去导出生成一份 Excel ,那么我们今天一起讨论一下,我们应该如何去实现,以及当我们获取的数据类型不同的时候,获取的方式该怎么随之调整? 二、知识点介绍 2.1 python下的Excel的操作 之前我们有篇文章有介绍过 poco跟Excel结合使用的案例 ,里面介绍了 Excel 的读写操作,在这里我们是使用了创建 Excel ,写入并保存Excel的操作。 importxlwingsasxw# 创建一个新的Excel工作簿和工作表wb = xw.Book()sheet = wb.sheets[0]#将内容写入Excel内sheet.range((row_index, col_index)).value = cell.text# 保存Excel文件wb.save('output.xlsx')wb.close() 2.2 获取table数据 在网页上看到类似图下的表格内容时,可以在界面点击 F12 唤出页面开发者模式,可以看到表格在 HTML 中...
- 下一篇
探秘数据库中的并行计算技术应用
本文分享自华为云社区《【GaussTech技术专栏】数据库中并行计算技术应用探秘》,作者:GaussDB数据库。 并行计算是提高系统性能的重要手段之一。该技术是通过利用多台服务器、多个处理器、处理器中的多核以及SIMD指令集等技术,实现任务的并行化处理,从而加快任务处理的速度。同时,在多个计算机领域有应用,如图像处理、大数据处理、科学计算及数据库等。 数据库中的并行处理技术 1. 分布式并行处理架构 并行处理数据库架构的出现可以追溯到上世纪80年代。当时计算机性能非常有限,但企业已经有了大规模的数据的处理需求。 那当时技术界是如何提升数据处理能力的呢? 当时技术界提出了三种并行架构:Shared Nothing、Shared Disk、Shared Memory,并对他们展开了各种讨论。图灵奖获得者Michael Stonebraker在1985年发表的一篇关于Shared Nothing的文章《The Case for Shared Nothing》,从不同维度,对三种架构能力做了一些比较分析。由于在成本、扩展性、可用性方面的优势,Shared Nothing成为主流的设计思路。 1...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- CentOS7编译安装Gcc9.2.0,解决mysql等软件编译问题
- Hadoop3单机部署,实现最简伪集群
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- CentOS8,CentOS7,CentOS6编译安装Redis5.0.7
- CentOS7设置SWAP分区,小内存服务器的救世主
- SpringBoot2更换Tomcat为Jetty,小型站点的福音
- Windows10,CentOS7,CentOS8安装Nodejs环境
- CentOS7编译安装Cmake3.16.3,解决mysql等软件编译问题
- 设置Eclipse缩进为4个空格,增强代码规范
- SpringBoot2全家桶,快速入门学习开发网站教程