首页 > 其他分享 >重庆市软件测试技能大赛——自动化测试(Selenium)篇

重庆市软件测试技能大赛——自动化测试(Selenium)篇

时间:2024-08-03 12:59:45浏览次数:11  
标签:wd span Selenium 元素 大赛 element window select 软件测试

声明如下个人学习笔记,可以作为复习参考等看一看,在此分享:

自动化测试(selenium)篇

①点击操作------.click()方法 是点击元素的正中心

②输入操作------.send_keys()方法

使用时先清楚原有内容:.clear() → 在进行输入操作

③获取元素内信息(属性名,ID内容)操作------.get_attribute()

eg:如获取输入框内未输入时显示的内容eg:print(element.get_attribute('placeholder'))

.get_attribute('outerHTML')获取整个HTML内容

.get_attribute('interHTML')获取属性内部HTML内容

页面最大化:driver.maximize_window()

CSS 表达式:

  1. CSS Selector语法选择元素原理:

通过CSS选择单个元素的方法是:find_element(By.CSS_SELECTOR,'CSS Selector参数')

find_element(By.CSS_SELECTOR,'CSS Selector参数')

class用 --- .类名

ID用 --- #ID名

2.精确查找使用(限制范围):

① 使用“>”来层层套接,使得精准查找

②不使用“>”时,使用空格代替 “>” 表示前者内部所有元素都可查询到

比如要选择上面的a元素,就可以使用 [href="http://www.miitbeian.gov.cn"] 。

这个表达式的意思是,选择 属性href值为 http://www.miitbeian.gov.cn 的元素。

“和”:一次性选择俩个或两个以上的元素,使用 “ ,” 隔开

3.按照次序查找元素:
根据次序来选择元素节点

xxx>span:nth-child(1) 在xxx的子元素里找到第一个为span元素

xxx>span:nth-last-child(1) 在xxx子元素里找到倒数第一个为span元素

p:nth-of-type(2) 在所有元素里找到第二个且类型为p的元素

span:nth-of-type(3) 在所有元素里找到第三个且类型为span的元素

p:nth-last-of-type(4) 在所有元素里找到倒数第四个且类型为span的元素

p:nth-child(even) 找到第偶数个类型为p的元素

p:nth-child(odd) 找到第奇数个类型为p的元素

兄弟关系节点

选择 h3 后面紧跟着的兄弟节点 span。

这就是一种 相邻兄弟 关系,可以这样写 h3 + span 表示元素 紧跟关系的 是 加号

h3 + span:表示选择与 h3 紧跟着的span标签

h3 ~ span:表示选择 h3 后面所有的 span 标签

frame内部元素操作

(1)要想实现窗口切换,必须要先使用wd.switch_to.frame('frame1')或者wd.switch_to.frame(wd.find_element(By.TAG_NAME, "iframe")),这时就可操作frame元素内容了

当操作完了之后退出frame使用wd.switch_to.default_content()

切换到新的窗口

解释:在网页上操作的时候,我们经常遇到,点击一个链接 或者 按钮,就会打开一个 新窗口

当打开一个新的页面后,但我们的Webdriver内容还是指向(停留)在旧窗口里的,这是我们使用 wd.switch_to.window(handle) 来获取新窗口的内容

这时使用 window_handles 属性 ,该属性包括了浏览器里面所有的窗口句柄(句柄,可以想象成对应网页窗口的一个ID,)

eg:for handle in wd.window_handles:

# 先切换到该窗口

wd.switch_to.window(handle)

# 得到该窗口的标题栏字符串,判断是不是我们要操作的那个窗口

if 'Bing' in wd.title:

# 如果是,那么这时候WebDriver对象就是对应的该该窗口,正好,跳出循环,

break

代码的用意就是:

我们依次获取 wd.window_handles 里面的所有 句柄 对象, 并且调用 wd.switch_to.window(handle) 方法,切入到每个窗口,

然后检查里面该窗口对象的属性(可以是标题栏,地址栏),判断是不是我们要操作的那个窗口,如果是,就跳出循环。

在新窗口操作结束后,回到原窗口使用 mainWindow = wd.current_window_handle

wd.switch_to.window(mainWindow)

进行切换

selenium
选择框

(1)radio框:

radio框选择选项,直接用WebElement的click方法,模拟用户点击就可以了

(2)checkbox框:

对checkbox进行选择,也就是直接用WebElment的click()方法,模拟用户点击选择

①首先把已选中的选项,全部自动化点击一遍,确保都是未选状态

eg:

elements = wd.find_elements(By.CSS_SELECTOR,

'#s_checkbox input[name="teacher"]:checked')

for element in elements:

element.click()

wd.find_element(By.CSS_SELECTOR,

"#s_checkbox input[value='小雷老师']").click()

(3)select框:

select内标签不像radio框和checkbox框都是input元素,只是type不同而已,而select框里的标签为select,所有Selenium专门提供了一个Select类进行操作

①select_by_value

根据选项的 value属性值 ,选择元素。

②select_by_index

根据选项的 次序 (从1开始),选择元素

③select_by_visible_text

根据选项的 可见文本 ,选择元素。

④deselect_by_value

根据选项的value属性值, 去除 选中元素

⑤deselect_by_index

根据选项的次序,去除 选中元素

⑥deselect_by_visible_text

根据选项的可见文本,去除 选中元素

⑦deselect_all

去除 选中所有元素

※select单选框:

不管原来选的是什么,直接用Select方法选择即可。

※select多选框:

1.某几个选项,要注意去掉原来已经选中的选项

2.然后再通过 select_by_visible_text方法 选择 小雷老师 和 小凯老师。

eg:

导入Select类

from selenium.webdriver.support.ui import Select

创建Select对象

select = Select(wd.find_element(By.ID, "ss_multi"))

select.deselect_all()

select.select_by_visible_text("小雷老师")

select.select_by_visible_text("小凯老师")

冻结网站临时显示页面(移动光标时消失)

在 开发者工具栏 console 里面执行如下js代码:

setTimeout(function(){debugger}, 5000)

这句代码什么意思呢?

表示在 5000毫秒后,执行 debugger 命令

4.PO模式(page Object):

一般PO模式项目下设置三个package(包)分别是

1. Base 用来存储元素定位、输入、点击(对象库层)

2.PageObject 用来存储元素操作方法,和记载页面(操作层)

3.TestCase 用来存储当前自动化的测试类(unittest,ddt,断言)(业务层)

eg:PO(三层):

对象库层

逻辑层

业务层

元素定位、输入、点击(导入webdriver)

对页面元素进行操作,以及加载页面(导入By,Base里面的BasePage包)

具体传参,对业务进行操作全部完成,以及断言,ddt数据驱动

在PO模式下截取当前页面的图片:

kaca = os.path.join(r'C:\Users\HP\Desktop', 'taobao.png') driver.save_screenshot(kaca)

步骤:导入OS包(import os)>>> 使用os.path.join方法输入kaca =(保存路径,命名)>>>driver.save_screenshot(kaca)

一般写在PO模式的PageObject包里

多条用例进行测试:

对每一条用例输入一条用例数据进行测试 如:

PO模式下设置智能等待时间

# 设置智能等待时间,这里设置为10秒

wait = WebDriverWait(driver, 10)

# 使用WebDriverWait和expected_conditions来等待某个元素出现

element = wait.until(EC.presence_of_element_located((By.ID, "my_element_id")))

Unittest测试完成生成HTML测试报告:

#在test_add.py的父文件夹同级创建test_report文件夹(run_test也在test_report文件夹下) import unittest from HTMLTestRunner import HTMLTestRunner if __name__ == '__main__': ToHtml = unittest.defaultTestLoader.discover('../test_case', pattern='test_add.py') with open('../test_report02/test01_add.html', 'wb') as f: runner = HTMLTestRunner(stream=f, title='Test Report', description='erp test', verbosity=2) runner.run(ToHtml)

以上为本人笔记,仅以参考

标签:wd,span,Selenium,元素,大赛,element,window,select,软件测试
From: https://blog.csdn.net/2202_75444261/article/details/140877544

相关文章

  • 参加阿里云X优酷AI江湖创作大赛,赠送博客园T恤
    大赛官网:https://developer.aliyun.com/plan/create/snbm8月刚开始就接到一个阿里云的广告单子,也是CPA(CostPerAction)方式,按有效参赛人数付费,KPI是完成500人参赛。参赛方式是基于阿里云函数计算服务部署的AI绘画平台创作图片作品。(注:函数计算服务有免费试用额度,使用这个额......
  • 软件测试——测试分类(超超超齐全版)
    为什么要对软件测试进行分类软件测试是软件⽣命周期中的⼀个重要环节,具有较⾼的复杂性,对于软件测试,可以从不同的⻆度加以分类,使开发者在软件开发过程中的不同层次、不同阶段对测试⼯作进⾏更好的执⾏和管理测试的分类⽅法。按照测试⽬标分类界面测试软件只是⼀种⼯具,软件......
  • driver. findElement()vs Selenium中的Webelement. findElement()
    Selenium是一个开源工具,可以自动化Web浏览器并帮助测试Web应用程序。它是Web应用程序测试中使用最广泛的工具之一。在Selenium中,两种常用的查找Web元素的方法是driver.findElement和WebElement.findElement。本文将讨论它们之间的差异。findElement()方法声明WebElementfindE......
  • 022.(附加)chromedriver编译-绕过selenium机器人检测
    有小伙伴说使用selenium没能绕过机器人检测,盘他。一、selenium简介Selenium是一个强大的工具,用于Web浏览器自动化,更常被用于爬虫但selenium需要通过webdriver来驱动chrome,每次运行selenium时,都要先找到对应版本的chromedriver.exe。chromedriver自动化会对浏览器的部分属......
  • Selenium + Python 自动化测试01(准备篇)
        本篇文章主要讲述Selenium+Python自动化测试-准备篇。主要时相关软件介绍,下载,安卓等。一、Selenium简介    1、Selenium是什么?        官网描述:        Primarily,itisforautomatingwebapplicationsfortestingpurposes,......
  • 四川省职工职业技能大赛网络安全决赛WP
    上午CTF部分websimpleloginyakit爆破出密码,记得应该是a123456: ppoppindex.php有一个任意文件读取:<?php//upload.phperror_reporting(0);highlight_file(__FILE__);classA{  public$a;  publicfunction__destruct()  {    $s=$this->$......
  • 深圳软件测试15K一面,问的简单
    1、自我介绍2、请介绍一下最近做过的项目‍‍‍3、你认为这个项目中最难的业务流程是什么?4、说一下在工作中你认为最有成就感的事情是什么?5、你们的UI自动化是怎么做的?6、怎么保证UI自动化测试的稳定性‍7、接口自动化测试怎么做的?‍‍‍‍‍8、公司的系统有多个版本同......
  • 软件测试三大难题:我们必须面对和解决
    软件测试是软件质量保证的重要手段之一,自然也是软件开发生命周期中不可或缺的一部分。但在软件测试领域,存在三大难题(也是测试的基本问题)——TestOracle问题、充分性问题和有效性问题,它们给我们带来巨大的挑战。我们必须关注这三大基本问题,整个测试生命周期都是围绕着这三大基......
  • 软件测试_接口测试面试题
    接口测试是软件测试中的重要环节,它主要验证系统不同模块之间的通信和数据交互是否正常。在软件开发过程中,各个模块之间的接口是实现功能的关键要素,因此对接口进行全面而准确的测试是确保系统稳定性和可靠性的关键步骤。接口测试的核心目标是确保系统在不同模块之间的数据传输......
  • 软件测试面试时问你的项目经验,你知道该怎么说吗?
    很简单,我来给你们一个公式自我介绍,名字学历荣誉。1简述项目背景,你身处这个项目是做什么的。不要太细,试着引导一下面试官让他提问。这样,请问您对此有什么疑问吗?2简述你在项目中的角色,做那方面的工作。具体的工作陈述。有个度,自己把握好,什么不该说,这个要管好嘴。比如,项......