编程语言
首页 > 编程语言> > 6.7__python_selenium(1)

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 模块
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在输入内容

=-========================================
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)开发者工具

 

 

2、找到对的属性id,name,class 等

 

 

id定位                    find_element_by_id() 详解: 案例:
from  selenium import  webdriver
import time
d=webdriver.Chrome()
d.get("https://www.baidu.com/")
time.sleep(2)
d.find_element_by_id("kw").send_keys("id定位方法")
============================================== name定位              find_element_by_name() 案例:
from  selenium import  webdriver
import time
d=webdriver.Chrome()
d.get("https://www.baidu.com/")
time.sleep(2)
d.find_element_by_name("wd").send_keys("name定位方法")
==============================================   class定位               find_element_by_class_name()
from  selenium import  webdriver
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定位方法")
============================================== link定位                  find_element_by_link_text()  

 

 案例:

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
import time
d=webdriver.Chrome()
d.get("https://www.baidu.com/")
time.sleep(2)
d.find_element_by_partial_link_text("hao1").click()
  =-======================================== JavaScript定位       document.getElementById("kw").value="duoceshi"

from  selenium import  webdriver
import time
d=webdriver.Chrome()
d.get("https://www.baidu.com/")
time.sleep(2)
js='document.getElementById("kw").value="js定位"'
d.execute_script(js)
=-========================================     tag定位                   find_element_by_tag_name()  
from  selenium import  webdriver
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定位")
  =================================== xpath定位               find_element_by_xpath()   (1)点击属性右键====copy  xpth ====复制的内容      //*[@id="kw"]
from  selenium import  webdriver
import time
d=webdriver.Chrome()
d.get("https://www.baidu.com/")
time.sleep(2)
d.find_element_by_xpath('//*[@id="kw"]').send_keys("xpath定位")
(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定位:
from  selenium import  webdriver
import time
d=webdriver.Chrome()
d.get("https://www.baidu.com/")
time.sleep(2)
d.find_element_by_xpath('//*[@id="kw"]').send_keys("xpath定位")
(2)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("//*[@name='wd']").send_keys("css中的name定位")
 (3)xpath中的class定位:
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
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中的组合属性定位")
(6)层级定位 上上级://*[@id="form"] 上一级://*[@id="form"]/span[1]/input 本省://*[@id="kw"]  
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
import time
d=webdriver.Chrome()
d.get("https://www.baidu.com/")
time.sleep(2)
d.find_element_by_css_selector('#kw').send_keys("css 定位")
 详解: (1)css中id定位 a.css中id定位简写(#id) 案例:
from  selenium import  webdriver
import time
d=webdriver.Chrome()
d.get("https://www.baidu.com/")
time.sleep(2)
d.find_element_by_css_selector("#kw").send_keys("css定位简写")
  b.css中id定位全称()
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