Selenium快速上手实战 | 下篇

简介: Selenium快速上手实战 | 下篇

前言



在“Selenium快速上手实战 | 上篇”中,我们简单地讲述了如何在IDE上使用Selenium。而今天的推文,我们将讲述更多用Selenium进行自动化测试更深层次的内容。

PS:完整的实操代码都会在下文中展示。


调试工具实战



在UI自动化测试中,最重要的就是对页面元素进行定位。我们可以利用调试工具来查看元素的属性,从而更好地实现元素定位。


以chrome浏览器为例,在打开的浏览器空白处点击鼠标右键,然后选择快捷菜单中的“检查”选项。浏览器就会弹出如下的调试信息窗口:



接下来我们只要点击调试信息窗口左上角带有箭头的图标按钮,然后再将鼠标移动到需要进行定位的元素上,窗口中就会显示出该元素的属性:



在上图可以看出,“百度一下”按钮的ID为"su",CLASS_NAME为 "bg s_btn"。


比较特别的是,如果我们想知道元素的XPATH或者CSS_SELECTOR这些属性值时,我们可能不能直接在元素代码查看。


这时我们可以在定位到属性的代码位置,点击鼠标右键,然后在快捷菜单中选择“Copy”选项,之后再选择“Copy XPath”或者“Copy seletor”即可得到元素的XPATH或者CSS_SELECTOR属性。



Selenium元素定位



元素属性


首先我们需要明白,在Selenium自动化测试中,元素定位都是根据元素属性来进行的。


元素属性有:ID、NAME、CLASS_NAME、TAG_NAME、CSS_SELECTOR、XPATH、LINK_TEXT、PARTIAL_LINK_TEXT等。


元素定位


Selenium给我们提供了很多根据元素属性来定位元素的方法:


find_element_by_id()
find_element_by_name()
find_element_by_class_name()
find_element_by_xpath()
find_element_by_link_text()
find_element_by_partial_link_text()
find_element_by_css_selector()
复制代码


以上方法需要填写的参数均是元素对应的属性值。


我们来实操1个小例子,要求启动chrome浏览器后,最大化浏览器,之后再打开百度首页,定位到首页的搜索框,输入搜索关键词“Airtest”。


利用调试工具,我们可以得到百度首页搜索框这个元素的属性:



# -*- 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.maximize_window()
driver.implicitly_wait(20)
driver.get("https://www.baidu.com/")
driver.find_element_by_id('kw').send_keys('Airtest')
复制代码


上述代码根据搜索框的ID属性来定位,之后再发送搜索的关键词“Airtest”,最终的页面结果如下:



Selenium与页面的交互



对浏览器的操作


常见的对浏览器的操作有获取页面代码、获取页面title、页面前进后退和刷新关闭等等。

这些操作都可以由WebDriver的属性来支持。


from selenium import webdriver
driver = WebChrome()
# 获取当前页面代码
driver.page_source
# 获取页面title
driver.title
# 获取浏览器名称
driver.name
# 获取当前窗口句柄
driver.current_window_handle
# 获取所有窗口句柄
driver.window_handles
# 页面前进
driver.forward()
# 页面后退
driver.back()
# 刷新页面
driver.refresh()
复制代码


对元素的操作


WebElement类提供了很多方法来对元素进行操作,例如清空、检查是否可编辑、是否被选中等。


我们还是以百度搜索框为例,定位搜索框,输入关键词“Airtest”,清空输入的关键词,检查搜索框是否可见、可编辑,以及搜索框是否被选中。


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.maximize_window()
driver.implicitly_wait(20)
driver.get("https://www.baidu.com/")
# 定位百度首页的搜索框
ss = driver.find_element_by_id('kw')
# 输入关键词
ss.send_keys('Airtest')
driver.implicitly_wait(20)
# 清空关键词
ss.clear()
# 检查是否可见、可编辑、是否被选中
print(ss.is_displayed())
print(ss.is_enabled())
print(ss.is_selected())
复制代码



下拉框定位


在Web应用的自动化测试中,我们经常会遇到需要处理下拉框的情况。


下拉框选项定位需要用到Select类,定位的基本步骤为:


①定位到下拉框这个元素

②实例化Select类

③调用Select类里面的方法来实现下拉框选项定位


Select类用来定位选项的方法有:


# 利用索引进行定位(注意索引是从0开始的)
select_by_index('索引值')
# 利用选项的value进行定位
select_by_value('value值')
# 利用选项的文本进行定位
select_by_visible_text('文本值')
复制代码


下面我们来看1个实操的小例子,我们选取了百度设置中1个输入法设置的下拉框来进行实操,用调试工具查看到这个下拉框的详情如下:



from airtest.core.api import *
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from airtest_selenium.proxy import WebChrome
# Select类需要引入
from selenium.webdriver.support.select import Select
driver = WebChrome()
driver.maximize_window()
driver.implicitly_wait(20)
driver.get("https://www.baidu.com/gaoji/preferences.html")
# 定位下拉框元素
ime_select = driver.find_element_by_id('ime')
# 实例下拉框
select = Select(ime_select)
select.select_by_index(0)
print('1.此时下拉框选中选项的值为:',ime_select.get_attribute('value'))
select.select_by_value('2')
print('2.此时下拉框选中选项的值为:',ime_select.get_attribute('value'))
select.select_by_visible_text('关闭')
print('3.此时下拉框选中选项的值为:',ime_select.get_attribute('value'))
复制代码



弹出框定位


在Selenium中,Alert类专门用来处理各种弹出框。在使用时,这个类同样需要引入。


我们依旧以上述页面作为例子,点击“恢复默认”的按钮,会弹出一个警告框。



下面的实例可以实现点击“恢复默认”按钮,打印按钮的文本信息,再点击弹窗的确认按钮。


from airtest.core.api import *
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from airtest_selenium.proxy import WebChrome
# 引入Alert类
from selenium.webdriver.common.alert import Alert
import time as t
driver = WebChrome()
driver.maximize_window()
driver.implicitly_wait(20)
driver.get("https://www.baidu.com/gaoji/preferences.html")
driver.find_element_by_xpath('//*[@id="restore"]').click()
t.sleep(5)
print('alert弹出框的文本信息为:',driver.switch_to_alert().text)
driver.switch_to_alert().accept()
复制代码



小结



关于Selenium的操作就本期就先讲到这里了,上述所有实操都是在AirtestIDE中实现的。

当然Selenium中还有一些鼠标、键盘事件等,有机会我们后续还会在本栏目中更新。

相关文章
|
7月前
selenium 实战
selenium 实战
76 0
|
1月前
|
数据采集 Web App开发 前端开发
Python爬虫进阶:Selenium在动态网页抓取中的实战
【10月更文挑战第26天】动态网页抓取是网络爬虫的难点,因为数据通常通过JavaScript异步加载。Selenium通过模拟浏览器行为,可以加载和执行JavaScript,从而获取动态网页的完整内容。本文通过实战案例,介绍如何使用Selenium在Python中抓取动态网页。首先安装Selenium库和浏览器驱动,然后通过示例代码展示如何抓取英国国家美术馆的图片信息。
91 6
|
7月前
|
Web App开发 IDE 测试技术
实战练习:用airtest-selenium脚本爬取百度热搜标题
实战练习:用airtest-selenium脚本爬取百度热搜标题
155 0
|
数据采集 前端开发 JavaScript
Selenium+2Captcha 自动化+验证码识别实战
Selenium+2Captcha 自动化+验证码识别实战
428 0
selenium-鼠标键盘事件+内附实战
selenium-鼠标键盘事件+内附实战
130 0
|
Web App开发 JavaScript 测试技术
selenium-等待时间+窗口操作详解+实战
selenium-等待时间+窗口操作详解+实战
268 0
|
前端开发 索引
selenium-元素定位+下拉选选项实战
selenium-元素定位+下拉选选项实战
164 0
|
前端开发 黑灰产治理 索引
selenium-元素定位+下拉框代码实战
selenium-元素定位+下拉框代码实战
195 0
|
Java 测试技术 C语言
软件工程高效学 | 实战案例:Selenium单元测试实战
软件工程是计算机领域的一门专业基础课,它对于培养开发者的软件素质、提高开发者的软件开发能力与软件项目管理能力具有重要意义。本篇介绍了Selenium单元测试实战。
151 0
软件工程高效学 | 实战案例:Selenium单元测试实战
|
测试技术 Python
HTMLReport应用之Unittest+Python+Selenium+HTMLReport项目自动化测试实战
HTMLReport应用之Unittest+Python+Selenium+HTMLReport项目自动化测试实战
840 0
HTMLReport应用之Unittest+Python+Selenium+HTMLReport项目自动化测试实战

热门文章

最新文章