Selenium快速上手实战 | 上篇

本文涉及的产品
图像搜索,任选一个服务类型 1个月
简介: Selenium快速上手实战 | 上篇

前言



Selenium是一个用于Web应用程序的自动化测试工具。它直接运行在浏览器中,可以模拟用户在浏览器上面的行为操作。


在AirtestIDE中,开发者也给我们提供了使用Selenium的窗口。不过使用的框架是Airtest-Selenium框架。Airtest-Selenium是对selenium的python库做的一层封装,它添加了部分图像识别的接口,也可以生成网页版测试报告。


本文将借助IDE上的Selenium窗口,来给大家讲解在浏览器上进行自动化测试的实战。


IDE中的Selenium窗口



在AirtestIDE中调出Selenium的窗口


默认情况下,IDE没有并显示Selenium的窗口,所以我们需要在IDE顶部的窗口菜单下,把Selenium Window勾选上,勾选之后Selenium的窗口才会显示在IDE界面的左侧。



插入初始代码的快捷按钮


Selenium Window给我们提供了一些常用的按钮,比如点击窗口下类似地球的按钮,会自动帮我们在脚本编辑窗口插入一些初始化代码:



插入代码之前,我们需要在脚本窗口弹出的黄色提供框中,选择Yes允许插入代码:



这样,脚本编辑窗就会自动插入如下代码:


# 引入selenium的webdriver模块
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from airtest_selenium.proxy import WebChrome
#创建一个实例,代码运行到这里,会打开一个chrome浏览器
driver = WebChrome()
driver.implicitly_wait(20)
复制代码


需要注意的是,如果是首次使用这个按钮,IDE会弹窗提示需要设置谷歌浏览器的路径:



这时我们就需要先到选项--设置中,找到Selenium那部分内容,然后把chrome的路径设置好,才能正常插入上述代码。



Selenium的常用方法



打开指定网址


我们以打开百度首页为例子:


driver.get("https://www.baidu.com/")
复制代码


driver.get() 方法会在浏览器中打开一个指定的网址,给它传入网址地址即可。


最大化窗口


driver.maximize_window()
复制代码


关闭窗口/浏览器


# 关闭当前窗口,如果浏览器此时只有1个窗口,浏览器也会被关闭
driver.close()
# 退出驱动关闭所有窗口
driver.quit()
复制代码


Airtest-Selenium简介



上文我们提到Airtest-Selenium是基于Selenium语法的,但是Airtest的开发者们还另外封装了如下方法:


图像识别接口


Airtest-Selenium对图像识别的封装有两个接口,图像识别点击和图像识别断言:

①点击Selenium Window下方的airtest_touch按钮



在浏览器页面上截取你想要点击位置的图片,双击完成截图,脚本编辑窗口会自动生成1条图像识别点击的脚本



driver.airtest_touch(Template(r"tpl1582031994893.png", record_pos=(8.99, 5.23), resolution=(100, 100)))
复制代码


②点击Selenium Window下方的airtest_touch按钮



在浏览器页面上截取你想要进行断言的图片,双击完成截图,脚本编辑窗口会自动生成1条图像识别断言脚本



driver.assert_template(Template(r"tpl1582032716811.png", record_pos=(0.51, 1.315), resolution=(100, 100)), "成功打开airlab官网")
复制代码


关于Selenium更多的断言实例,详看我们之前的推文“测试同学都应该知道的断言知识...” 。


值得注意的是,这两个接口是基于Airtest框架的图像识别封装,如果图像脚本运行时在网页中找不到对应图像,会抛出Target not found on screen的异常。


多标签页录制


selenium提供了切换标签页的接口。


driver.switch_to.window(driver.window_handles[number])
复制代码


这个语句执行后,可以切换到第number个打开的标签页。但是对于用户来说,这个接口不是那么好理解与调用,因为这样需要记住标签打开的顺序。


而大部分时候,切换标签页的操作一般都出现在:打开新窗口、关闭标签页这两种情况下。因此,Airtset-Selenium封装了两个接口:


driver.switch_to_new_tab()
driver.switch_to_previous_tab()
复制代码


在这个接口内部,Airtest-Selenium维护了标签页的组织结构。用户只需在打开新标签页时,调用switch_to_new_tab


另外在结束当前标签页时,回到上一个标签页时,调用switch_to_previous_tab()即可,不再需要去考虑当前是第几个这样之类的问题。


生成报告


被Airtest-Selenium封装的接口,运行过后都会生成对应的报告,在AirtestIDE中可以直接点击生成报告按钮,即可查看对应的报告内容。



小结



我们以1个小的实战案例来总结今天讲述的内容:


# -*- encoding=utf8 -*-
__author__ = "19617"
from airtest.core.api import *
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from airtest_selenium.proxy import WebChrome
driver = WebChrome()
driver.implicitly_wait(20)
driver.get("https://airlab-gl.163.com/b2b")
driver.maximize_window()
driver.assert_template(Template(r"tpl1582032716811.png", record_pos=(0.51, 1.315), resolution=(100, 100)), "成功打开airlab官网")
driver.airtest_touch(Template(r"tpl1582034527805.png", record_pos=(8.975, 5.765), resolution=(100, 100)))
driver.switch_to_new_tab()
driver.switch_to_previous_tab()
driver.quit()
复制代码



预告



Selenium快速上手实战 | 下篇 将给大家讲述如下内容:

① chrome调试工具实战

② Selenium元素定位实战

③ Selenium与页面的交互

相关文章
|
Web App开发 数据采集 C#
解决Firefox代理身份验证弹出窗口问题:C#和Selenium实战指南
本文是一份实战指南,主要介绍了在使用Selenium和C#进行网页抓取时,如何设置代理服务器的身份验证以避免自动化流程中断。文章首先列出了所需的开发环境和工具,然后通过C#代码示例详细展示了如何在Firefox浏览器中设置代理IP、端口、用户名、密码以及UserAgent和Cookies。代码中包含了自动处理代理身份验证弹出窗口的配置,以及如何添加Cookies的方法。最后,文章强调了结合C#和Selenium可以提高网页抓取任务的稳定性和效率。
246 3
解决Firefox代理身份验证弹出窗口问题:C#和Selenium实战指南
selenium 实战
selenium 实战
112 0
|
14天前
|
数据采集 Web App开发 机器学习/深度学习
Selenium爬虫部署七大常见错误及修复方案:从踩坑到避坑的实战指南
本文揭秘Selenium爬虫常见“翻车”原因,涵盖浏览器闪退、元素定位失败、版本冲突、验证码识别等七大高频问题,结合实战案例与解决方案,助你打造稳定高效的自动化爬虫系统,实现从“能用”到“好用”的跨越。
300 0
|
11月前
|
数据采集 测试技术 Python
自动化淘宝秒杀:使用Selenium WebDriver的实战指南
本文详细介绍了如何利用Selenium WebDriver自动化淘宝秒杀操作,包括环境配置、代码实现及注意事项,旨在帮助读者提升秒杀成功率,同时提醒合理使用以遵守平台规则。
490 8
|
11月前
|
数据采集 Web App开发 前端开发
Python爬虫进阶:Selenium在动态网页抓取中的实战
【10月更文挑战第26天】动态网页抓取是网络爬虫的难点,因为数据通常通过JavaScript异步加载。Selenium通过模拟浏览器行为,可以加载和执行JavaScript,从而获取动态网页的完整内容。本文通过实战案例,介绍如何使用Selenium在Python中抓取动态网页。首先安装Selenium库和浏览器驱动,然后通过示例代码展示如何抓取英国国家美术馆的图片信息。
604 6
|
数据采集 数据安全/隐私保护 Python
Selenium与Web Scraping:自动化获取电影名称和评分的实战指南
在信息时代,Web Scraping 成为核心技能之一,尤其在面对如豆瓣电影这类动态网页时更为重要。本文介绍如何运用 Selenium 这一强大的自动化工具,配合代理 IP、User-Agent 及 Cookie,实现对豆瓣电影名称与评分的有效抓取。通过设置代理 IP 来规避访问限制,调整 User-Agent 以模拟真实用户行为,并利用 Cookie 保持会话状态,确保数据抓取的稳定性和隐蔽性。文中还提供了完整的 Python 代码示例,帮助读者快速上手实践。
415 0
|
Web App开发 IDE 测试技术
实战练习:用airtest-selenium脚本爬取百度热搜标题
实战练习:用airtest-selenium脚本爬取百度热搜标题
389 0
|
Java 测试技术 C语言
软件工程高效学 | 实战案例:Selenium单元测试实战
软件工程是计算机领域的一门专业基础课,它对于培养开发者的软件素质、提高开发者的软件开发能力与软件项目管理能力具有重要意义。本篇介绍了Selenium单元测试实战。
242 0
软件工程高效学 | 实战案例:Selenium单元测试实战
|
数据采集 前端开发 JavaScript
Selenium+2Captcha 自动化+验证码识别实战
Selenium+2Captcha 自动化+验证码识别实战
694 0