python之selenium

python之selenium
一、selenium之介绍
(1)selenium是什么?
a、selenium是python中的一个第三方库
b、Selenium是一个应用于web应用程序的测试工具,支持多平台,多浏览器,多语言去实现ui自动化测试,我们现在讲的Selenium版本其实是Selenium2版本;版本3.141.0
c、Selenium测试直接运行在浏览器中,就像真正的用户在操作一样。支持的浏览器包括IE,Firefox,Safari,Google Chrome等
(2)selenium库用来做什么?
UI自动化(界面设计)
通过模拟用户手工操作ui页面方式,用代码去实现自动化操作和验证的行为
(3)ui自动化的优点?
a、解决重复性功能测试和验证
b、减少测试人员在回归测试时用例漏测和验证点的漏测
c、减少冒烟测试,回归测试的人力成本,节约时间提高效率。
(4)ui自动化测试的情况?
a.需求不稳定,无法进行ui自动化
b.自动化用例的覆盖率,占用例20%-40%(正常场景)
c、场景覆盖占当前功能场景70%-80%

(5)UI自动化一般在什么时间做?
1、接口测试
2、功能测试
3、ui自动化(在功能测试完以后)
(6)ui自动化和功能测试那个重要?
都重要,ui自动化测试是在功能测试测试完以后进行
(7)selenium的优点有哪些?
a.工具免费
b.安装简单,小巧,selenium其实就是一个包
c.支持多语言(java,python)+selenium完成自动化测试
d.支持多平台(window,linux)
e.支持多浏览器 (ie,firefox,chrome)
(8)Selenium工具原理是什么?
Selenium2的核心是webdriver
webdriver是按照 client-server设计原理设计
client:简单来说就是我们写的代码,以http请求的方式发送给server端,server端接收请求,执行相应操作,并返回给client端。

二、selenium环境安装
1、selenium有新版本和老版本:
第一种下载方式:pip install selenium3.141.0 在dos下下载
第二种下载方式:pycharm 设置项目
解释器点击+号输入“selenium”选择版本
3.141.0点击“install”下载完成
2、安装谷歌浏览器;
a、下载谷歌浏览器,查看版本
b、下载对应的谷歌浏览器的驱动,驱动放到python安装的目录下
c、执行能打开浏览就成功;
语句:
from selenium import webdriver # 调用selenium模块 导入webdriver函数
import time #导入时间模块
dx=webdriver.Chrome() #创建一个webdriver对象,对应的浏览器Chrome()
dx.get("https://www.baidu.com") #对象.get打开浏览窗口
time.sleep(2) #休眠
dx.find_element_by_id("chat-textarea").send_keys("dcs") #通过id定位输入框,输入内容dcs

四、selenium定位方法
案例
(1)id定位 find_element_by_id()
案例:
from selenium import webdriver
dx=webdriver.Chrome() #创建webdriver,设置浏览器
dx.get("https://www.baidu.com/") #打开百度网站
dx.maximize_window() #窗口最大化
dx.find_element_by_id("chat-textarea").send_keys("id定位")

name定位 find_element_by_name()
案例:
from selenium import webdriver
import time
dx=webdriver.Chrome() #创建webdriver,设置浏览器
dx.get("https://www.taobao.com/") #打开百度网站
dx.maximize_window() #窗口最大化
time.sleep(3)
dx.find_element_by_name('q').send_keys("手机")

class定位 find_element_by_class_name()
案例:
from selenium import webdriver
import time
dx=webdriver.Chrome() #创建webdriver,设置浏览器
dx.get("https://www.jd.com/") #打开百度网站
dx.maximize_window() #窗口最大化
time.sleep(2)
dx.find_element_by_class_name("text").send_keys("class定位")

link定位 find_element_by_link_text()
案例:
from selenium import webdriver
import time
dx=webdriver.Chrome() #创建webdriver,设置浏览器
dx.get("https://www.jd.com/") #打开百度网站
dx.maximize_window() #窗口最大化
time.sleep(2)
dx.find_element_by_link_text("免费注册").click()

partial link定位 find_element_by_partial_link_text() 模糊定位标签
案例:
from selenium import webdriver
import time
dx=webdriver.Chrome() #创建webdriver,设置浏览器
dx.get("https://www.jd.com/") #打开百度网站
dx.maximize_window() #窗口最大化
time.sleep(2)
dx.find_element_by_partial_link_text("免费").click()

JavaScript定位 document.getElementById("kw").value="duoceshi"
案例:
from selenium import webdriver
import time
dx=webdriver.Chrome() #创建webdriver,设置浏览器
dx.get("https://www.jd.com/") #打开百度网站
dx.maximize_window() #窗口最大化
time.sleep(2)
js='document.getElementById("key").value="js定位"'
dx.execute_script(js)

tag定位 find_element_by_tag_name()
案例:
from selenium import webdriver
import time
dx=webdriver.Chrome() #创建webdriver,设置浏览器
dx.get("https://www.jd.com/") #打开百度网站
dx.maximize_window() #窗口最大化
time.sleep(2)
inputs=dx.find_elements_by_tag_name("input")
for i in inputs:
if i.get_attribute("id")=="key":
i.send_keys("tag_name定位方法")

xpath定位 find_element_by_xpath()
打开元素右键copy==copy xpth
案例:
from selenium import webdriver
import time
dx=webdriver.Chrome() #创建webdriver,设置浏览器
dx.get("https://www.jd.com/") #打开百度网站
dx.maximize_window() #窗口最大化
time.sleep(2)
dx.find_element_by_xpath('//*[@id="key"]').send_keys("xpath定位")

css定位 find_element_by_css_selector()
打开元素右键copy==copy selector
css:#key
案例:
from selenium import webdriver
import time
dx=webdriver.Chrome() #创建webdriver,设置浏览器
dx.get("https://www.jd.com/") #打开百度网站
dx.maximize_window() #窗口最大化
time.sleep(2)
dx.find_element_by_css_selector("#key").send_keys("css定位")

规则:
在这9种常用的定位方法中,优先顺序
1)有id优先使用id定位
2)没有id,考虑使用name或者class定位。
3)如果没有id,name,class再考虑用xpath,css定位。
4)如果是链接可以考虑使用link_text,partial_link_text 定位。
5)tag_name和JavaScript还是用的比较少的。
我们根据实际情况,具体问题具体分析

xpath定位详解:
// 相对路径://*[@id="chat-textarea"](右键==copy=copy xpath)
解释:
//相对路径

  • 匹配所有元素节点
    @选择属性
    . 当前节点
    .. 选择当前节点的父节点
    @* 匹配任意属性节点

/绝对路径:(右键==copy=copy full xpath)
/html/body/div[1]/div[2]/div[3]/div/div/div[2]/div/div/div/div/div[1]/div[4]/div[1]/div[2]/textarea

from selenium import webdriver
import time
dx=webdriver.Chrome() #创建webdriver,设置浏览器
dx.get("https://www.jd.com/") #打开百度网站
dx.maximize_window() #窗口最大化
time.sleep(3)
dx.find_element_by_xpath('//input[@id="key"]').send_keys("xpath中的标签定位")

dx.find_element_by_xpath('//*[@id="search"]/div[2]/div[2]/input').send_keys("xpath中的层级定位")

dx.find_element_by_xpath('//*[@class="text" and @type="text"]').send_keys("xpath定位组合属性")

dx.find_element_by_xpath('//*[@accesskey="s"]').send_keys("xpath中其他属性定位")

dx.find_element_by_xpath('//*[@class="text"]').send_keys("xpath定位class")

dx.find_element_by_xpath('//*[@id="key"]').send_keys("xpath定位id")

dx.find_element_by_xpath('//*[@name="q"]').send_keys("xpath中的name定位")
css定位详解:
from selenium import webdriver
import time
dx=webdriver.Chrome() #创建webdriver,设置浏览器
dx.get("https://www.jd.com/") #打开百度网站
dx.maximize_window() #窗口最大化
time.sleep(3)
dx.find_element_by_css_selector('#search > div.search-m > div.form.include_jingyan.hotWords>input').send_keys("css中层级定位")

dx.find_element_by_css_selector('[accesskey="s"][id="key"]').send_keys("css中组合属性定位")

dx.find_element_by_css_selector('[accesskey="s"]').send_keys("css中其他属性定位")

dx.find_element_by_css_selector('[class="text"]').send_keys("css中class全称定位")

dx.find_element_by_css_selector('.text').send_keys("css中class简写定位")

dx.find_element_by_css_selector("[id='key']").send_keys("css中id全称定位")

dx.find_element_by_css_selector("#key").send_keys("css中id简写定位")

dx.find_element_by_xpath('//*[@name="q"]').send_keys("xpath中的name定位")

posted @ 2025-10-20 17:58  Shidy  阅读(8)  评论(0)    收藏  举报