Selenium进行Web自动化测试

Selenium+Python实现Web自动化测试

一、环境配置

环境基于win10(X64)

  1. 安装Python;
  2. 安装PyCham
  3. 安装chomedriver
    chomedriver下载地址
    可以查看本地chrome软件版本下载对应的chomedriver,如果没有则下载最新版本即可;
    在这里插入图片描述
    将下载解压后的chromedriver放到安装的Python环境文件夹内
    在这里插入图片描述
    4.代码实现一个简单自动化查找
from selenium import webdriver
from selenium.webdriver.common.by import By
# 定义一个driver变量,用来接收实例化后的浏览器
driver = webdriver.Chrome()
# 使用get方法,访问网址
driver.get("https://www.bilibili.com")
# 1.找到搜索框的位置,输入软件测试
driver.find_element(By.CLASS_NAME, 'nav-search-input').send_keys("软件测试")
# 2.找到搜索框位置点击搜索
driver.find_element(By.CLASS_NAME, 'nav-search-btn').click()

二、元素定位

By.ID、By.CLASS_NAME、By.NAME底层实现都是CSS查找;

By.IDBy.LINK_TEXT
By.CLASS_NAMEBy.PARTIAL_LINK_TEXT
By.TAG_NAMEBy.CSS_SELECTOR
By.NAMEBy.XPATH

1、By.ID

网页校验id:document.getElement(“kw”)

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

driver = webdriver.Chrome()
# 窗口最大化
driver.maximize_window()
driver.get("https://www.baidu.com/")
driver.find_element(By.ID, "kw").send_keys("selenium")
driver.find_element(By.ID, "su").click()

2、By.CLASS_NAME

from time import sleep

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

driver = webdriver.Chrome()
# 窗口最大化
driver.maximize_window()
driver.get("https://www.bilibili.com")
# 唯一class_name定位
# driver.find_element(By.CLASS_NAME,'nav-search-input').send_keys('软件')
# 找多个class_name的第一个
# driver.find_element(By.CLASS_NAME,'channel-link').click()
# 找多个class_name的非第一个,按下标查找
driver.find_elements(By.CLASS_NAME,'channel-link')[4].click()
# class_name中有空格时不可使用此查找 错误用法如下
# driver.find_element(By.CLASS_NAME,'icon-bg icon-bg__channel').click()
sleep(10)

3、By.TAG_NAME
(不推荐)

import time

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

driver = webdriver.Chrome()
# 窗口最大化
driver.maximize_window()
driver.get("https://www.bilibili.com")
driver.find_element(By.TAG_NAME,"input").send_keys("python")
# 根据下标
# driver.find_elements(By.TAG_NAME, "input")[50].click()
time.sleep(3)
driver.close()

4、By.NAME

import time

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

driver = webdriver.Chrome()
# 窗口最大化
driver.maximize_window()
driver.get("https://www.baidu.com")
# driver.find_element(By.NAME, "wd").send_keys("根据NAME定位")
# 根据下表取值
driver.find_elements(By.NAME, "wd")[0].send_keys("根据NAME定位")
time.sleep(3)

5、By.LINK_TEXT

import time

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

driver = webdriver.Chrome()
# 窗口最大化
driver.maximize_window()
driver.get("https://www.baidu.com")
# driver.find_element(By.LINK_TEXT, "新闻").click()
driver.find_elements(By.LINK_TEXT, "新闻")[0].click()
time.sleep(3)
driver.close()

6、By.PARTIAL_LINK_TEXT
模糊匹配

import time

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

driver = webdriver.Chrome()
# 窗口最大化
driver.maximize_window()
driver.get("https://www.baidu.com")
# driver.find_element(By.PARTIAL_LINK_TEXT, "新闻").click()
driver.find_elements(By.PARTIAL_LINK_TEXT, "闻")[0].click()
time.sleep(3)
driver.close()

7、By.CSS_SELECTOR
CSS常用汇总:

选择器格式选择器示例示例说明
标签选择器html标签input选择所有input元素
ID选择器#id属性值#kw选择所有id='kw’的元素
类选择器.class属性值.nav-search-input选择所有class='nav-search-input’的元素
属性选择器[属性名][name=‘wd’]选择所有name="wd"的元素
组合选择器标签加属性描述input.s_ipt选择所有class='s_ipt’的input元素
父子关系元素1>元素2div>a选择所有父级是div的a元素
后代关系#id属性值div a选择div中的所有a元素
第一子元素:first-clilda:first-clild选择所有a元素且该元素是其父级的第一个元素
最后一个元素:last-clilda:last-clild选择所有a元素且该元素是其父级的最后一个元素
顺序选择器:nth-clild(n)a:nth-clild(2)选择所有a元素且该元素是其父级的第二个子元素(下标1开始)
import time

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

driver = webdriver.Chrome()
# 窗口最大化
driver.maximize_window()
driver.get("https://www.baidu.com")
#根据ID定位
driver.find_element(By.CSS_SELECTOR,"#kw").send_keys("你好")
driver.find_element(By.CSS_SELECTOR,"#su").click()
# 根据class属性值定位
driver.find_element(By.CSS_SELECTOR,".nav-search-inpt").send_keys("你好")
# 根据name属性值定位
driver.find_element(By.CSS_SELECTOR,"[name= 'wd']").send_keys("你好")
# 根据标签属性定位
driver.find_element(By.CSS_SELECTOR,"a[href= 'http://image.baidu.com']").click()
# 模糊匹配-包含
driver.find_element(By.CSS_SELECTOR,"a[href*= 'image.baidu.com']").click()
# 模糊匹配-匹配开头
driver.find_element(By.CSS_SELECTOR,"a[href^= 'image.baidu.com']").click()
#模糊匹配-匹配结尾
driver.find_element(By.CSS_SELECTOR,"a[href$= 'image.baidu.com/']").click()
#组合定位
driver.find_element(By.CSS_SELECTOR,"input.s_ipt").send_keys("selenium")
#定位子元素
#<div id="s-top-left" class="s-top-left-new s-isindex-wrap">
driver.find_element(By.CSS_SELECTOR,"div#s-top-left>a").click()
#定位子元素-id唯一时
driver.find_element(By.CSS_SELECTOR,"#s-top-left>a").click()
driver.find_element(By.CSS_SELECTOR,"div.s-top-left-new.s-isindex-wrap>a").click()
driver.find_element(By.CSS_SELECTOR,"div#s-top-left>a:nth-clild(3)").click()
driver.find_elements(By.CSS_SELECTOR,"div#s-top-left>a")[3].click()
driver.find_elements(By.CSS_SELECTOR,"div#s-top-left>a:last-clild").click()
  • 5
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小鹿可可乐

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值