6.7__python_selenium(1)
作者:互联网
python+selenium
一、介绍自动化
1、什么是ui自动化?
ui 就是界面,
通过模拟手工操作用户页面方式,用代码来实现自动操作和验证行为。
2、ui自动化的优点?
(1)解决重复性的功能测试和验证
(2)减少测试人员在回归测试时用例漏测和验证点的漏测
(3)减少冒烟测试,减少回归测试人力成本
(4)节省时间,提高测试效率
3、ui 自动化的缺点?
(1)需求不稳定,比如:敏捷开发,速度快,ui频繁变更,定位不稳定,提高用例维护成本
(2)自动化用例的覆盖,占用例总数大搞20%-40%;
(3)场景覆盖占当前功能场景70%--80%;
4、ui自动化和功能测试那个重要?
都重要,先把功能测试测完,在进行ui自动化测试;
功能测试是ui自动化基础,先熟悉功能的前提下能做好UI自动化
5、ui自动化用来做什么?
ui自动化不是用来测试bug,用来回归和验证;
======================================
二、介绍selenium
(1)Selenium是一个应用于web应用程序的测试工具,支持多平台,多浏览器,多语言
去实现ui自动化测试; (2)现在讲的Selenium版本其实是Selenium2版本(3)Selenium测试直接运行在浏览器中,就像真正的用户在操作一样。支持的浏览器包
括IE,Firefox,Safari,Google Chrome等 (4)selenium 是一套完整的web应用程序测试系统,包含了测试的录制(seleniumDE),编写及运行(Selenium Remote Control)和测试的并行处理(SeleniumGrid) (5)selenium的优点? 1、工具免费 2、安装简单,小巧,selenium其实就是一个包 3、支持多语言(java,python)+selenium完成自动化测试 4、支持多平台(window,linux) 5、支持多浏览器 (ie,firefox,chrome) 6、Selenium2的核心是webdriver (6)selenium原理; webdriver是按照 client-server设计原理设计 client:简单来说就是我们写的代码,以http请求的方式发送给server端,server 端接收请求,执行相应操作,并返回给client端。 server:客户端的脚本启动后,被控制的浏览器就是server端,职责就是等待 client端发送请求并作出响应。================================================
三、安装
1、selenium是一个第三方库,python中有很多第三方库,
2、第三方库在哪里?
(1)C:\python37\Lib\site-packages
(2)pycharm===setting====项目中
(3)下载方式:
方式1:pip install selenuim=3.141.0
方法二:
===========================================
1、下载谷歌浏览器:
(1)查看浏览器的版本
2、下载对应谷歌浏览器的谷歌驱动
(1)下载地址:http://chromedriver.storage.googleapis.com/index.html
(2)谷歌存放地址:
(1)地址1:C:\python37
(2)C:\python37\Scripts
=-=========================================
案例:
from selenium import webdriver #导入selenium 模块 在导入webdriver 模块Selenium中元素定位方法 要实现UI自动化,就必须学会定位web页面元素,Selenium核心 webdriver模块提供了9种定位元素方法 定位方式 提供方法 id定位 find_element_by_id() name定位 find_element_by_name() class定位 find_element_by_class_name() link定位 find_element_by_link_text() partial link定位 find_element_by_partial_link_text() JavaScript定位 document.getElementById("kw").value="duoceshi" tag定位 find_element_by_tag_name() xpath定位 find_element_by_xpath() css定位 find_element_by_css_selector() ============================================= 实战: 1、打开网页,查看元素 (1)f12 (2)开发者工具
import time #导入时间模块
d=webdriver.Chrome() #创建一个d对象来打开浏览器,对浏览器实现操作,
d.get("https://www.baidu.com/") #通过对象谷歌浏览器,输入网址,通过get方法输入url 来打开网站
time.sleep(2) #休眠 2s
d.maximize_window() #窗口最大化
time.sleep(2) #休眠
d.find_element_by_id("kw").send_keys("多测师") #通过id定位,send_keys在输入内容
=-========================================
2、找到对的属性id,name,class 等
id定位 find_element_by_id() 详解: 案例:
from selenium import webdriver============================================== name定位 find_element_by_name() 案例:
import time
d=webdriver.Chrome()
d.get("https://www.baidu.com/")
time.sleep(2)
d.find_element_by_id("kw").send_keys("id定位方法")
from selenium import webdriver============================================== class定位 find_element_by_class_name()
import time
d=webdriver.Chrome()
d.get("https://www.baidu.com/")
time.sleep(2)
d.find_element_by_name("wd").send_keys("name定位方法")
from selenium import webdriver============================================== link定位 find_element_by_link_text()
import time
d=webdriver.Chrome()
d.get("https://www.baidu.com/")
time.sleep(2)
d.find_element_by_class_name("s_ipt").send_keys(" class定位方法")
案例:
from selenium import webdriver
import time
d=webdriver.Chrome()
d.get("https://www.baidu.com/")
time.sleep(2)
d.find_element_by_link_text("hao123").click()
=-======================================== partial link定位 find_element_by_partial_link_text()
from selenium import webdriver=-======================================== JavaScript定位 document.getElementById("kw").value="duoceshi"
import time
d=webdriver.Chrome()
d.get("https://www.baidu.com/")
time.sleep(2)
d.find_element_by_partial_link_text("hao1").click()
from selenium import webdriver=-======================================== tag定位 find_element_by_tag_name()
import time
d=webdriver.Chrome()
d.get("https://www.baidu.com/")
time.sleep(2)
js='document.getElementById("kw").value="js定位"'
d.execute_script(js)
from selenium import webdriver=================================== xpath定位 find_element_by_xpath() (1)点击属性右键====copy xpth ====复制的内容 //*[@id="kw"]
import time
d=webdriver.Chrome()
d.get("https://www.baidu.com/")
time.sleep(2)
inputs=d.find_elements_by_tag_name("input")
for i in inputs:
if i.get_attribute("name")=="wd":
i.send_keys("tag定位")
from selenium import webdriver(2)xpath详解 1、路径的区分: a .绝对路径 特点: 1),以单斜杠/开头, 2),从页面开始到元素,严格按照在html页面的位置和顺序向下找 场景:/html/body/div[1]/div[1]/div[5]/div/div/form/span[1]/input b.相对路径 我们定位一般用的都是相对路径 特点: 1)以双斜杠//开头, 2)不考虑元素在页面中的绝对路径和位置 3)只考虑是否存在符合表达式的元素即可。 场景://*[@id="kw"] 解释:语法: //标签名 [ @属性名 =属性值] // 表示相对路径,从匹配选择的当前节点选择文档中的节点,而不考虑他们的位置 . 选择当前节点 @匹配任何属性节点 * 表示匹配所有的属性 (1) css中的id定位:
import time
d=webdriver.Chrome()
d.get("https://www.baidu.com/")
time.sleep(2)
d.find_element_by_xpath('//*[@id="kw"]').send_keys("xpath定位")
from selenium import webdriver(2)css中的name定位:
import time
d=webdriver.Chrome()
d.get("https://www.baidu.com/")
time.sleep(2)
d.find_element_by_xpath('//*[@id="kw"]').send_keys("xpath定位")
from selenium import webdriver(3)xpath中的class定位:
import time
d=webdriver.Chrome()
d.get("https://www.baidu.com/")
time.sleep(2)
d.find_element_by_xpath("//*[@name='wd']").send_keys("css中的name定位")
from selenium import webdriver
import time
d=webdriver.Chrome()
d.get("https://www.baidu.com/")
time.sleep(2)
d.find_element_by_xpath("//*[@class='s_ipt']").send_keys("xpath中的class定位")
(4)xpath中的其他属性定位
from selenium import webdriver
import time
d=webdriver.Chrome()
d.get("https://www.baidu.com/")
time.sleep(2)
d.find_element_by_xpath("//*[@autocomplete='off']").send_keys("xpath中的其他属性定位")
(5)xpath中的组合属性定位
from selenium import webdriver(6)层级定位 上上级://*[@id="form"] 上一级://*[@id="form"]/span[1]/input 本省://*[@id="kw"]
import time
d=webdriver.Chrome()
d.get("https://www.baidu.com/")
time.sleep(2)
d.find_element_by_xpath("//*[@autocomplete='off' and @class='s_ipt']").send_keys("xpath中的组合属性定位")
from selenium import webdriver
import time
d=webdriver.Chrome()
d.get("https://www.baidu.com/")
time.sleep(2)
d.find_element_by_xpath('//*[@id="form"]/span[1]/input').send_keys("层级定位")
=================================== css定位 find_element_by_css_selector()
from selenium import webdriver详解: (1)css中id定位 a.css中id定位简写(#id) 案例:
import time
d=webdriver.Chrome()
d.get("https://www.baidu.com/")
time.sleep(2)
d.find_element_by_css_selector('#kw').send_keys("css 定位")
from selenium import webdriverb.css中id定位全称()
import time
d=webdriver.Chrome()
d.get("https://www.baidu.com/")
time.sleep(2)
d.find_element_by_css_selector("#kw").send_keys("css定位简写")
from selenium import webdriver
import time
d=webdriver.Chrome()
d.get("https://www.baidu.com/")
time.sleep(2)
d.find_element_by_css_selector('[id="kw"]').send_keys("id的全称定位")
2、css中的class定位
a.class简写定位
from selenium import webdriver
import time
d=webdriver.Chrome()
d.get("https://www.baidu.com/")
time.sleep(2)
d.find_element_by_css_selector('.s_ipt').send_keys("css中class简写定位")
b.claas 全称定位
from selenium import webdriver
import time
d=webdriver.Chrome()
d.get("https://www.baidu.com/")
time.sleep(2)
d.find_element_by_css_selector('[class="s_ipt"]').send_keys("css中class的全称定位")
(3)css中name定位:
from selenium import webdriver
import time
d=webdriver.Chrome()
d.get("https://www.baidu.com/")
time.sleep(2)
d.find_element_by_css_selector("[name='wd']").send_keys("css中的name定位")
(4)css中其他属性定位
from selenium import webdriver
import time
d=webdriver.Chrome()
d.get("https://www.baidu.com/")
time.sleep(2)
d.find_element_by_css_selector("[autocomplete='off']").send_keys("css中其他属性定位")
(5)css组合属性全称定位
from selenium import webdriver
import time
d=webdriver.Chrome()
d.get("https://www.baidu.com/")
time.sleep(2)
d.find_element_by_css_selector("[autocomplete='off'][id='kw']").send_keys("css中组合属性定位")
(6)层级定位
a.上上级定位
from selenium import webdriver
import time
d=webdriver.Chrome()
d.get("https://www.baidu.com/")
time.sleep(2)
d.find_element_by_css_selector('form>span>input').send_keys( "上上级定位")
b上级定位
from selenium import webdriver
import time
d=webdriver.Chrome()
d.get("https://www.baidu.com/")
time.sleep(2)
d.find_element_by_css_selector('span>input').send_keys( "上一级定位")
=-========================================在这9种常用的定位方法中,优先顺序 1)有id优先使用id定位 2)没有id,考虑使用name或者class定位。 3)如果没有id,name,class再考虑用xpath,css定位。 4)如果是链接可以考虑使用link_text,partial_link_text 定位。 5)tag_name和JavaScript还是用的比较少的。 我们根据实际情况,具体问题具体分析
标签:__,定位,webdriver,selenium,element,6.7,find,css 来源: https://www.cnblogs.com/xukairoot/p/16354358.html