Selenium自动化测试框架

一.Selenium概述

1.1 什么是框架?

框架(framework)是一个框子——指其约束性,也是一个架子——指其支撑性。是一个基本概念上的

结构用于去解决或者处理复杂的问题。

框架是整个或部分系统的可重用设计,表现为一组抽象构件及构件实例间交互的方法;另一种定义
认为,框架是可被应用开发者定制的应用骨架。前者是从应用方面而后者是从目的方面给出的定义。

框架,其实就是某种应用的半成品,就是一组组件,供你选用完成你自己的系统。简单说就是使用

别人搭好的舞台,你来做表演。

1.2 为什么使用框架?

1)自己从头实现太复杂

2)使用框架能够更专注于业务逻辑,加快开发速度

3)框架的使用能够处理更多细节问题

4)使用人数多,稳定性,扩展性好

1.3 Selenium 工作原理

在这里插入图片描述

二.Selenium API基础

1.前提操作

(1)导入库

from selenium import webdriver

(2)创建浏览器对象

  1. driver=webdriver.Chrome() #创建浏览器对象 谷歌浏览器

  2. driver.get('https://www.baidu.com/') #访问网址 百度

2.方法

我们需要使用dir()来查看方法

print(dir(driver))

(1) 调整浏览器的尺寸

driver.maximize_window() #窗口最大化

print(driver.get_window_size()) #获取浏览器尺寸 {‘height’: 1020, ‘width’: 945}

driver.set_window_size(width=‘1200’,height=‘1000’) #设置浏览器尺寸

(2) 调整浏览器的位置

  1. print(driver.get_window_position()) #获取浏览器位置 {'x': 10, 'y': 10}

  2. print(driver.set_window_position(100,100)) #设置浏览器位置

(3) 获取当前页面的url

print(driver.current_url) #https://www.baidu.com/

(4) 获取当前页面的title

print(driver.title) #百度一下,你就知道

(5) 刷新页面

driver.refresh()

(6) 返回上一页/下一页

driver.back() #上一页

driver.forward() #下一页

(7) 保存图片

#方式一:

data=driver.get_screenshot_as_png()
with open(‘111.jpg’,‘wb’) as f:
f.write(data)

#方式二:

driver.get_screenshot_as_file(‘222.jpg’)

(8) 查看网页源码

print(driver.page_source)

(9) 关闭网页

driver.close() #关闭当前页面

driver.quit() #关闭所有页面

3.元素定位

  1. # 方式一: driver.find_element_by_xxx(value)

  2. # 方式二:driver.find_element(By.xxx,value)

  3. # 1.id

  4. input=driver.find_element_by_id('kw')

  5. input.send_keys(12306)

  6. # 2.class

  7. input=driver.find_element_by_class_name('s_ipt')

  8. input.send_keys(12306)

  9. # 3.name

  10. input=driver.find_element_by_name('wd')

  11. input.send_keys(12306)

  12. # 4.xpath

  13. input=driver.find_element_by_xpath('//*[@id="kw"]')

  14. input.send_keys(12306)

  15. # 5.css

  16. input=driver.find_element_by_css_selector('#kw')

  17. input.send_keys(12306)

  18. # 6.link_text 全匹配

  19. news=driver.find_element_by_link_text('新闻')

  20. news.click()

  21. # 7.partial_link_text 模糊匹配

  22. news=driver.find_element_by_partial_link_text('闻')

  23. news.click()

  24. # 8.tag name 标签名

  25. put=driver.find_element_by_tag_name("span")

  26. put.click()

三.Selenium API高级

3.1 页面跳转

  1. from selenium import webdriver

  2. driver=webdriver.Chrome()

  3. driver.get('http://bj.58.com')

  4. # 获取当前页面的句柄

  5. h1=driver.window_handles

  6. print('58同城:',h1)

  7. # 定位元素 宠物

  8. a=driver.find_element_by_link_text('宠物')

  9. # 点击宠物

  10. a.click()

  11. # 获取点击跳转之后的句柄

  12. h2=driver.window_handles

  13. print('宠物:',h2)

  14. # 跳转句柄

  15. driver.switch_to.window(h2[1])

  16. # 定位元素 宠物狗

  17. dog=driver.find_element_by_xpath('/html/body/div[3]/div[1]/dl[1]/dd[1]/a/strong')

  18. # dog=driver.find_element_by_link_text('宠物狗')

  19. dog.click()

  20. # 获取点击跳转之后的句柄

  21. h3=driver.window_handles

  22. print('宠物狗:',h3)

  23. # 跳转句柄

  24. driver.switch_to.window(h3[2])

  25. # 定位元素

  26. small=driver.find_element_by_css_selector('#selection > dl:nth-child(1) > dd > a:nth-child(6)')

  27. small.click()

3.2 表单跳转

  1. from selenium import webdriver

  2. import time

  3. driver=webdriver.Chrome()

  4. driver.get('https://qzone.qq.com/') #访问qq空间页面

  5. driver.maximize_window() #窗口最大化

  6. #定位表单

  7. frame=driver.find_element_by_id('login_frame')

  8. # 表单跳转

  9. driver.switch_to.frame(frame)

  10. time.sleep(2)

  11. # 点击密码登录

  12. driver.find_element_by_link_text('密码登录').click()

  13. time.sleep(2)

  14. # 输入账号

  15. driver.find_element_by_id('u').send_keys('1720003909')

  16. time.sleep(2)

  17. # 输入密码

  18. driver.find_element_by_id('p').send_keys('xqy20001220')

  19. time.sleep(2)

  20. # 点击登录

  21. driver.find_element_by_id('login_button').click()

  22. # 关闭页面

  23. driver.close()

3.3 弹出框操作

  1. #进入弹出框

  2. driver.switch_to.alert

  3. #接收警告

  4. accept()

  5. #解散警告

  6. dismiss()

  7. #发送文本到警告框

  8. send_keys(data)

  9. 代码:

  10. from selenium import webdriver

  11. import time

  12. driver=webdriver.Chrome()

  13. driver.get('https://www.baidu.com/')

  14. # 定位 设置

  15. set=driver.find_element_by_id('s-usersetting-top')

  16. set.click()

  17. # 定位 搜索设置

  18. search=driver.find_element_by_xpath('//*[@id="s-user-setting-menu"]/div/a[1]/span')

  19. search.click()

  20. # 定位 每页20条

  21. page=driver.find_element_by_xpath('/html/body/div[1]/div[6]/div/div/div/div[1]/form/div/ul/li[3]/span[2]/span[2]/label')

  22. page.click()

  23. # 定位 保存设置

  24. save=driver.find_element_by_css_selector('#se-setting-7 > a.prefpanelgo.setting-btn.c-btn.c-btn-primary')

  25. save.click()

  26. time.sleep(2)

  27. driver.switch_to.alert.accept() #弹框处理

  28. # driver.switch_to.alert.dissmiss() #弹框处理

3.4 滚动条操作

  1. from selenium import webdriver

  2. import time

  3. driver=webdriver.Chrome()

  4. driver.get('http://bj.58.com')

  5. time.sleep(3)

  6. # 滚动条到底部

  7. # js="var q=document.documentElement.scrollTop=10000"

  8. js = "window.scrollTo(0,document.body.scrollHeight)"

  9. driver.execute_script(js) #执行js

  10. time.sleep(3)

  11. # 顶部

  12. js="window.scrollTo(0,0)"

  13. driver.execute_script(js)

  14. time.sleep(3)

  15. # 移动到指定元素

  16. target = driver.find_element_by_xpath('/html/body/div[3]/div[1]/div[1]/div/div[2]/div[2]/a[13]') #定位移动到的元素

  17. driver.execute_script("arguments[0].scrollIntoView();", target)

  18. target.click()

3.5 鼠标键盘操作

  1. from selenium import webdriver

  2. from selenium.webdriver import ActionChains #鼠标操作

  3. from selenium.webdriver.common.keys import Keys #键盘操作

  4. import time

  5. driver=webdriver.Chrome()

  6. driver.get('https://www.baidu.com/')

  7. # 定位元素 更多

  8. more=driver.find_element_by_link_text('更多')

  9. #鼠标操作

  10. ActionChains(driver).click(more).perform() #鼠标左击

  11. ActionChains(driver).context_click(more).perform() #鼠标右击

  12. ActionChains(driver).move_to_element(more).perform() #鼠标悬浮

  13. #键盘操作

  14. srk = driver.find_element_by_id("kw")

  15. srk.send_keys(12306)

  16. time.sleep(2)

  17. srk.send_keys(Keys.CONTROL,"a")

  18. srk.send_keys(Keys.CONTROL,"x")

  19. time.sleep(2)

  20. srk.send_keys(Keys.CONTROL,'v')

3.6 下拉框操作

  1. from selenium import webdriver

  2. driver=webdriver.Chrome()

  3. driver.get('https://www.baidu.com/')

  4. driver.maximize_window()

  5. # 定位元素 设置按钮

  6. set=driver.find_element_by_id('s-usersetting-top')

  7. set.click()

  8. # 定位元素 高级搜索

  9. find=driver.find_element_by_xpath('//*[@id="s-user-setting-menu"]/div/a[2]/span')

  10. find.click()

  11. # 定位元素 全部时间

  12. time=driver.find_element_by_class_name('c-select-selected-value')

  13. time.click()

  14. # 定位元素 最近一月

  15. m=driver.find_elements_by_class_name('c-select-item')

  16. #方式一:

  17. m[3].click()

  18. #方式二

  19. for i in m:

  20. if i=='最近一月':

  21. i.click()

3.7 等待操作

  1. (1)强制等待

  2. import time #强制等待:无论网络是否良好,必须等待对应的时间,才会执行下面的代码

  3. time.sleep(3)

  4. (2) 隐式等待

  5. driver.implicitly_wait(100) #隐式等待,当前界面的所有元素全部加载完成,才会执行下面的代码

  6. (3) 显示等待

  7. from selenium.webdriver.support.wait import WebDriverWait #导入显性等待的包

  8. from selenium.webdriver.support import expected_conditions as EC #判断所需要的元素是否已经被加载出来

  9. from selenium.webdriver.common.by import By #定位

  10. # 定位元素 设置按钮

  11. WebDriverWait(driver,10,0.5).until(EC.presence_of_element_located((By.ID,"s-usersetting-top")))

  12. set=driver.find_element_by_id('s-usersetting-top')

  13. set.click()

四.Selenium IDE

4.1 什么是Selenium IDE?

Selenium的IDE(集成开发环境)是一个易于使用的Firefox插件,用于开发Selenium测试案例。

它提供了一个图形用户界面,用于记录使用Firefox浏览器,用来学习和使用Selenium用户操作,
但它只能用于只用Firefox浏览器不支持其它浏览器

4.2 IDE功能简介

在这里插入图片描述

 

总结:

感谢每一个认真阅读我文章的人!!!

作为一位过来人也是希望大家少走一些弯路,如果你不想再体验一次学习时找不到资料,没人解答问题,坚持几天便放弃的感受的话,在这里我给大家分享一些自动化测试的学习资源,希望能给你前进的路上带来帮助。

软件测试面试文档

我们学习必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有字节大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。

 

          视频文档获取方式:
这份文档和视频资料,对于想从事【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!以上均可以分享,点下方小卡片即可自行领取。

  • 25
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Selenium是一个流行的自动化测试框架,它提供了一组工具和库,用于进行Web应用程序的自动化测试。Selenium具有以下几个主要组成部分: 1. Selenium WebDriver:它是Selenium的核心组件,用于编写和执行自动化测试脚本。它支持多种编程语言,包括Python,Java,C#等。通过使用WebDriver,可以模拟用户在浏览器中的行为,比如点击、输入文本等操作。 2. Selenium Grid:它允许在多个浏览器和平台上并行执行测试脚本。使用Grid,可以将测试任务分发给不同的节点,以加快测试的执行速度。这对于跨平台和异构环境中的自动化测试非常有用。 3. Selenium IDE:它是一个基于Firefox的插件,用于记录和回放用户在浏览器中的操作,以创建测试用例。Selenium IDE提供了一个简单易用的图形界面,但仅限于Firefox浏览器。 总结来说,Selenium是一个功能强大的自动化测试框架,可以帮助开发人员和测试人员编写和执行自动化测试脚本。通过使用Selenium WebDriver和其他组件,可以实现高效的测试脚本编写和执行,并支持并行测试和跨平台测试。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [selenium自动化测试框架](https://blog.csdn.net/kk_lzvvkpj/article/details/130902907)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 50%"] - *2* [Selenium自动化测试框架](https://blog.csdn.net/qq_44954371/article/details/126611927)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值