【selenium】自动化测试学习笔记

一、 基于python环境搭建

1.python开发环境

2.安装selenium包

(1)通过pip包管理工具安装

安装:pip install selenium

查看:pip show selenium

卸载:pip uninstall selenium

(2)通过pycharm安装

3.安装浏览器

4.安装浏览器驱动

谷歌浏览器:selenium  + chrome驱动(chromedriver)

驱动下载地址:https://chromedriver.storage.googleapis.com/

应用:【系统-高级系统设置-环境变量-系统变量-path】中加chromedriver.exe所在的文件夹地址

5.webdriver第一个案例演示

通过程序启动浏览器,并打开百度首页,暂停3秒,关闭浏览器

实现步骤:

(1)导包

form selenium import webdriver

from time import sleep

(2)创建浏览器驱动对象

chrome浏览器:driver=webdriver.Chrome()

edge浏览器:driver=webdriver.Edge()

firefox浏览器:driver=webdriver.Firefox()

(3)打开web页面

driver.get("")

(4)使用id定位,输入admin

element=driver.find_elemengt_by_id("id")#查找 id元素

element.send_keys("admin") #在该id属性的元素对象中输入内容——admin

(5)暂停

time.sleep(3)

(6)关闭驱动对象

driver.quit()

  • 二、selenium提供8种定位元素方式

  

(1)id

说明:基于元素的id属性来定位元素,id一般情况下在当前页面中是唯一

Selenium3:

方法:element=driver.find_elemengt_by_id("id")#查找 id元素

element.send_keys("admin") #在该id属性的元素对象中输入内容——admin

提示:元素必须要有id属性

Selenium4:

import time

from selenium import webdriver
from selenium.webdriver.common.by import By

driver = webdriver.Chrome()
driver.maximize_window()
driver.get("http://www.baidu.com/")

element = driver.find_element(By.ID, "kw")
element.send_keys("selenium")

time.sleep(5)

(2)name

基于元素特有属性定位

Selenium3:

方法:element=driver.find_elemengt_by_name("name")

element.send_keys("admin")#输入admin

Selenium4:

driver.find_element(By.NAME,'wd').send_keys('百度')

(3)class_name

基于元素特有属性定位,使用元素的class属性定位

Selenium3:

方法:element=driver.find_elemengt_by_class_name("class_name")

element.send_keys("admin")#输入admin

Selenium4:

driver.find_element(By.CLASS_NAME,'nav-search-btn').click()

多个classname相同的对象,通过find_elements()[]查找

driver.find_elements(By.CLASS_NAME,'channel-link')[4].click()

(4)tag_name

基于元素标签名称定位 <标签名 .../>

Selenium3:

方法:element=driver.find_elemengt_by_tag_name("tag_name")#使用tag_name定位

element.send_keys("admin")#输入admin

如果有多个相同标签,则返回符合条件的第一个标签

Selenium4:

driver.find_element(By.TAG_NAME,'input').send_keys("selenium")

(5)link_text

基于超链接 a标签定位(使用全部文本内容匹配元素 精准匹配)

Selenium3:

方法:element=driver.find_elemengt_by_link_text("link_text")

element.click()

Selenium4:

driver.find_element(By.LINK_TEXT,'新闻').click()

(6)partial_link_text

定位超链接 a标签(使用局部或全部文本内容匹配元素)

Selenium3:

方法:element=driver.find_elemengt_by_partial_link_text("partial_link_text")

element.click()

注意:partial_link_text定位元素的内容可以模糊部分值,但是必须能代表唯一性,否则报错

Selenium4:

driver.find_element(By.PARTIAL_LINK_TEXT,'闻').click()

(7)XPath(XML Path)

基于元素路径

Selenium3:

方法:element=driver.find_elemengt_by_xpath(xpath)

策略:

1、路径:绝对路径(以单斜杠/开头);相对路径(以双斜杠//开头,双斜杠后一定要跟标签名或*)

2、路径结合属性:在xpath中属性必须使用@修饰,如 //*[@id='value']

3、路径结合多个属性:如 //*[@id='value' and @name='value']

4、路径结合层级:以双斜杠开头使用单斜杠区分子集,如 //*[@id='value']/input

重点://*[contains(@属性,'value')]

     

(8)CSS

基于元素选择器

  

Selenium3:

方法:element=driver.find_elemengt_by_css_selector(css_selector)

Selenium4:

1、id选择器:#id属性

driver.find_element(By.CSS_SELECTOR,'#kw').send_keys("selenium")

2、class选择器:.class属性

driver.find_element(By.CSS_SELECTOR,".nav-search-btn").click()

3元素选择器:element

driver.find_element(By.CSS_SELECTOR,'a[href="http://image.baidu.com/"]').click()

4、属性选择器:[id='value']

driver.find_element(By.CSS_SELECTOR,"[name='wd']").send_keys("selenium")

5、层级选择器:p>input或p input (>与空格的区别:>必须为子集,空格只要是下属就可以)

driver.find_element(By.CSS_SELECTOR, "#s-top-left > a:nth-child(3)").click()

延申:

input[type^='p'] type属性以p字母开头的元素

input[type$='d'] type属性以d字母结束的元素

input[type*='w'] type属性包含w字母的元素

三、selenium常见元素定位

  (1)Radio单选器

import time

from selenium import webdriver
from selenium.webdriver.common.by import By

driver = webdriver.Chrome()
driver.maximize_window()
driver.get("https://www.iviewui.com/view-ui-plus/component/form/radio")

# radio单选框
driver.find_elements(By.XPATH, '//input[@class="ivu-radio-input" and @type="radio"]')[2].click()
time.sleep(3)
driver.find_element(By.XPATH, '//span[text()="Windows"]').click()
time.sleep(3)

  (2)Chechkbox多选框

import time

from selenium import webdriver
from selenium.webdriver.common.by import By

driver = webdriver.Chrome()
driver.maximize_window()
driver.get("https://www.iviewui.com/view-ui-plus/component/form/checkbox")

# checkbox多选框
driver.find_element(By.XPATH,'//span[text()="Facebook"]').click()
time.sleep(3)
driver.find_element(By.XPATH,'//span[text()="香蕉"]').click()
time.sleep(3)

  (3)Select选择器

import time

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.select import Select
driver = webdriver.Chrome()
driver.maximize_window()
driver.get("https://sahitest.com/demo/selectTest.htm")

# select下拉框
time.sleep(1)
select=Select(driver.find_element(By.ID,'s1'))
# 根据index下标获取,从0开始
select.select_by_index(2)
# 根据option的value进行选择
select.select_by_value("51")
# 根据下拉框内容
select.select_by_visible_text("Cell Phone")

  (4)级联选择

import time

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.select import Select

driver = webdriver.Chrome()
driver.maximize_window()
driver.get("https://www.iviewui.com/view-ui-plus/component/form/cascader")

# 级联选择器
driver.find_element(By.XPATH,'//input[@class="ivu-input ivu-input-default"]').click()
time.sleep(1)
driver.find_element(By.XPATH,'//li[contains(text(),"江苏")]').click()
time.sleep(1)
driver.find_element(By.XPATH,'//li[contains(text(),"苏州")]').click()
time.sleep(1)
driver.find_element(By.XPATH,'//li[contains(text(),"狮子林")]').click()

  (5)时间选择器

import time

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.select import Select

driver = webdriver.Chrome()
driver.maximize_window()
driver.get("https://www.iviewui.com/view-ui-plus/component/form/date-picker")
# 日期选择器
driver.find_elements(By.XPATH,'//input[@class="ivu-input ivu-input-default ivu-input-with-suffix"]')[1].send_keys("2024-03-18 - 2024-03-20")

  (6)弹框

import time

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.select import Select

driver = webdriver.Chrome()
driver.maximize_window()
ent/form/date-picker")
# driver.get("https://sahitest.com/demo/alertTest.htm")
# driver.get("https://sahitest.com/demo/confirmTest.htm")
driver.get("https://sahitest.com/demo/promptTest.htm")

# alert弹框
driver.find_element(By.NAME,'b1').click()
# 使用alert.text获取弹框的文字
print(driver.switch_to.alert.text)
time.sleep(3)
# 点击确定
driver.switch_to.alert.accept()

# #confirm弹框
driver.find_element(By.NAME,'b1').click()
# 使用alert.text获取弹框的文字
print(driver.switch_to.alert.text)
time.sleep(3)
# 点击确定
# driver.switch_to.alert.accept()
# 点击取消
driver.switch_to.alert.dismiss()

# prompt弹框
driver.find_element(By.NAME,'b1').click()
time.sleep(3)
# 点击确定
driver.switch_to.alert.send_keys("测试")
time.sleep(3)
driver.switch_to.alert.accept()

  (7)文件上传upoad

import time
from sysconfig import get_path

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.select import Select
from utils.getpath import get_path

driver = webdriver.Chrome()
driver.maximize_window()
driver.get("https://sahitest.com/demo/fileUpload.htm")

# 文件上传
driver.find_element(By.NAME,'f1').send_keys(r"/Users/user/Desktop/selenium.docx")
time.sleep(3)
#相对路径
path=get_path()
print(path)
upload=driver.find_element(By.NAME,'f2')
upload.send_keys(r"{}".format(path))

  (8)文件下载

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值