栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

Selenium--自动化测试

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Selenium--自动化测试

目录

1.web环境部署

1.1selenium的安装

1.2浏览器驱动获取

1.2.1webdriver原理 

2.八大定位元素定位

2.1  id定位方式

2.2  name定位元素

2.3 classname定位元素

2.4 link test

2.5 partial link text

2.6 tag name

2.7 xpath

2.8  css selector

 3.操作测试对象

4 等待

4.1 固定等待 sleep()

4.2 智能等待(隐式等待)

5 对浏览器的操作

5.1 浏览器的最大化

5.2设置浏览器的宽和高

5.3浏览器的前进和后退

5.4浏览器滚动条的控制

6.键盘事件


1.web环境部署

1.1selenium的安装

selenium是一个自动化测试工具,他利用我们可以驱动浏览器执行特定的动作,比如点击,输入等操作。

1.安装

在cmd中输入:pip install selenuim

2.卸载:

在cmd中输入:pip uninstall selenuim

3.查看:pip show selenuim

1.2浏览器驱动获取

可以与很多种浏览器,这里写了谷歌和火狐两种

火狐驱动下载地址:https://github.com/mozilla/geckodriver/releases

谷歌驱动下载地址:http://npm.taobao.org/mirrors/chromedriver/

获取下载驱动的版本号一定要和本地电脑浏览器的版本号一样(可能没有一样的,但可以选择用点号隔开的前三位必须相同,第四位可以选择接近自己浏览器版本的那个数),例如:

下载解压完之后会得到一个getckodriver.exe或者chromedriver.exe驱动程序,放到安装Python的根目录下就好了

然后运行以下脚本

#导包
import time
from selenium import webdriver

#导入webdriver工具包,这样就可以使用里面的api
browser = webdriver.Firefox()
#打开百度
browser.get("https://www.baidu.com")
#通过元素的ID定位到想到操作的元素,并且输入相应的文本内容
browser.find_elements-by_id("kw").send_keys("科比')
#通过元素id定位到相应元素,进行点击操作
browser.find_element_by_id("su").click()
#时间轴观察
time.sleep(5)
#关闭
browser.quit()

1.2.1webdriver原理 

(1)启动浏览器,webdriver把浏览器绑定在一个端口,形成一个remote server

(2)脚本通过commandexecutor向server发送请求

(3)server接收到请求后,把web service命令转化为浏览器的native指令,去操作浏览器

2.八大定位元素定位

webdriver提供了一系列对象定位方法,常用的有以下八种,不管是什么定位方式,这个方式(id,name)必须全局唯一

id如果存在,可以全局唯一定位一个元素
name存在并且全局唯一才可以定位到
class name使用的是class属性进行定位
link text必须是连接,且链接内容全局唯一 a标签
partial link text必须是连接,且链接内容全局唯一 a标签
tag name通过元素的标签名称来定位
xpath任何一个元素都可以定位到
css selector元素选择器

2.1  id定位方式

前提:元素必须有id属性

find_element_by_id(元素value)

1.先使用find_element_by_id(元素value)来获取元素定位

2.调用send_keys()来输入内容

//导包
import time
from selenium import webdriver

//导入webdriver工具包,这样就可以使用里面的api
browser = webdriver.Firefox()
//打开百度
browser.get("https://www.baidu.com")
//通过元素的ID定位到想到操作的元素,并且输入相应的文本内容
browser.find_elements-by_id("kw").send_keys("科比")

//时间轴观察
time.sleep(5)
//关闭
browser.quit()

2.2  name定位元素

前提:必须有name元素,name元素一般名称重复,必须确定其唯一性之后才可以使用,当前页面内有多个元素的特征值是相同时,定位元素方法的执行,默认只会获取第一个符合要求的特征

browser.find_element_by_name("wd").send_keys("科比")
browser.find_element_by_id("su").click()

2.3 classname定位元素

前提:元素必须有class属性

browser.find_element_by_class_name("s_ipt").send_keys("科比")
browser.find_element_by_id("su").click()

2.4 link test

说明:定位超链接标签

点击hao123

browser.find_element_by_link_text("hao123").click()

2.5 partial link text

说明:定位超链接标签

可以精准或模糊匹配

browser.find_element_by_partial_link_text("123").click()

2.6 tag name

说明:通过元素标签来定位,标签名就是查看元素时紧挨着<的单词或者字母

broswer.find_element_by_tag_name("标签名")

tag_name标签大量存在,并且重复性很高,一般都不会选择使用tag_name来定位元素

2.7 xpath

说明:可以定义任意元素

browser.find_element_by_xpath("//*[@id='kw']").send_keys("科比")
browser.find_element_by_id("su").click()

可以右击选择选择copy,复制xpath

2.8  css selector
browser.find_element_by_css_selector("#kw").send_keys("科比")
browser.find_element_by_css_selector("#su").click()

 可以右击选择复制selector

 3.操作测试对象

1.send_keys()   向元素发送消息

2.click()  点击元素

3.submit() 提交表单

4.clear() 清除元素内容

5.text   获取元素的内容

browser.find_element_by_css_selector("#kw").send_keys("科比")
#browser.find_element_by_css_selector("#su").submit()
time.sleep(2)
browser.find_element_by_id("kw").clear()

browser.find_element_by_id("kw").send_keys("塔图姆")
browser.find_elements_by_id("su").submit()

4 等待

4.1 固定等待 sleep()

必须等待够括号中的时间

4.2 智能等待(隐式等待)

browser.implicitly_wait  等待页面上的元素加载出来立马去执行下一个指令

5 对浏览器的操作

5.1 浏览器的最大化

broswer..maximize_window()

5.2设置浏览器的宽和高

browser.set_window_size(宽,高)

5.3浏览器的前进和后退

后退:browser.back()

前进:browser.forward()

5.4浏览器滚动条的控制

把滚动条拉到最低端:

js0="var q= document.documentElement.scrollTop=10000"
browser.execute_script(js0)

把滚动条拉到最顶端

js1 = "var q=docunment.documentElement.scrollTop=0"

browser.execute_script(js1)

6.键盘事件

导入工具包:from selenuim.webdriver.commom.keys import Keys

Keys.TAB

Keys.ENTER

组合键:

导入工具包:from selenuim.webdriver.common.action_chain import ActionChains

全选:send_keys(Keys.CONTROL,'a')

剪贴:send_Keys(Keys.CONTROL,'x')

import time
from selenium import webdriver
from selenium.webdriver.common.keys import Keys

driver = webdriver.Firefox()
driver.get("https://www.baidu.com/")
#浏览器的最大化
driver.maximize_window()
driver.find_element_by_id("kw").send_keys("元旦快乐")
driver.find_element_by_id("su").click()
b = driver.find_elements_by_id("su")
time.sleep(5)

driver.find_element_by_id("kw").send_keys(Keys.CONTROL,'a')
time.sleep(3)
driver.find_element_by_id("kw").send_keys(Keys.CONTROL,'x')
time.sleep(4)

driver.find_element_by_id("kw").send_keys(2022)
driver.find_element_by_id("su").click()

time.sleep(6)
driver.quit()

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1025156.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号