【自动化测试selenium】


简单的自动化脚本

from selenium import webdriver
import time

driver = webdriver.Chrome()
driver.get("https://www.baidu.com/")
driver.maximize_window()
driver.find_element_by_css_selector("#kw").send_keys("我在他乡挺好的")  # 点位页面的元素,对元素进行操作
driver.find_element_by_css_selector("#su").click()

time.sleep(8)
driver.quit()

1.导入webdriver工具包
这里是引用
2.获得被控制浏览器的驱动,浏览器必须安装相应的浏览器驱动
在这里插入图片描述
3.通过元素的ID定位想要操作的元素,并且向元素输入相应的文本内容并进行点击操作
在这里插入图片描述
4.退出关闭窗口
在这里插入图片描述

  • driver.quit()和driver.close()两者区别:close方法关闭当前的浏览器窗口,quit方法不仅关闭窗口,还好彻底的退出webdriver,释放与driverserver之间的连接,因此quit是更彻底的关闭,quit会更好的释放资源。

元素的定位

id定位

id是页面元素的属性,是最常用元素的定位方式。如果元素有id,全局唯一,可以直接定位元素。

 driver.find_element_by_id("kw").send_keys("六一儿童节")
 driver.find_element_by_id('su').click()

name定位

如果这个元素有name,并且元素的name命名在整个页面是唯一的,那么我们可以用name来定位元素。

driver.find_element_by_name('wd').send_keys("自动化测试")
driver.find_element_by_name('su').click()

class name定位

不一定可以定位元素

driver.find_element_by_class_name('bg s_ipt_wr new-pmd quickdelete-wrap').send_keys("自动化测试")

link text定位

link text定位适合可点击的链接

driver.find_element_by_link_text("新闻").click()

Partial link text定位

通过部分链接的内容去定位元素

driver.find_element_by_partial_link_text("新").click()

tag name定位

必须唯一才可定位,组成元素的tag

driver.find_element_by_tag_name("input").send_keys("自动化测试")
driver.find_element_by_tag_name('input').click()

xpath定位

一定可以定位到该元素,每一个元素的xpath都是唯一的。

driver.find_element_by_xpath('//*[@id="kw"]').send_keys("自动化测试")
driver.find_element_by_xpath('//*[@id="su"]').click()

css定位

一定可以定位到元素

driver.find_element_by_css_selector('#kw').send_keys("自动化测试")
driver.find_element_by_css_selector('#su').click()

操作测试对象

  • click 点击操作对象
  • send_keys 给操作对象输入文本信息
  • submit 提交表单
  • clear 清除操作对象的内容
  • text 获取操作对象的文本内容

鼠标点击与键盘输入

from selenium import webdriver
import time
# 获得浏览器驱动
driver = webdriver.Chrome()
# 打开需要访问的web页面
driver.get("https://www.baidu.com/")
driver.find_element_by_css_selector('#kw').send_keys("自动化测试")
driver.find_element_by_css_selector('#su').submit()
time.sleep(10)
# 清除浏览器的内容
driver.find_element_by_css_selector('#kw').clear()
time.sleep(10)
driver.find_element_by_css_selector("#kw").send_keys("手工测试")
driver.find_element_by_css_selector("#su").submit
driver.quit()

text获取元素文本

from selenium import webdriver
import time
# 获得浏览器驱动
driver = webdriver.Chrome()
# 打开需要访问的web页面
driver.get("https://www.baidu.com/")
text = driver.find_element_by_id("bottom_layer").text
print(text)
time.sleep(8)
driver.quit()

添加等待

  • time.sleep() :固定等待
  • driver.implicity_wait():智能等待
time.sleep(5)
driver.implicitly_wait(10)

打印信息

  • 获得title:driver.title
  • 获得URL:driver.current_url
  • 打印url
from selenium import webdriver
import time
# 获得浏览器驱动
driver = webdriver.Firefox()
# 打开需要访问的web页面
driver.get("https://www.baidu.com/")
title = driver.title
print(title)
url = driver.current_url
print(url)

打印结果:
在这里插入图片描述

浏览器的操作

设置浏览器的宽和高

# 设置浏览器的长和宽
driver.set_window_size(400, 1000)

浏览器的最大化

# 浏览器是最大化
driver.maximize_window()

浏览器的前进和后退

# 浏览器后退
driver.back()
# 浏览器的前进
driver.forward()

控制浏览器的滚动条

# 浏览器滚动条的控制
js0 = "var q = document.documentElement.scrollTop=10000" # 最低端
driver.execute_script(js0)
time.sleep(5)
js1 = "var q=document.documentElement.scrollTop=0" # 最顶端

键盘事件

要使用键盘按键,必须引入keys包:from selenium.webdriver.common.keys import Keys

键盘按键用法:
通过send_keys()调用按键:
send_keys(Keys.TAB) # TAB
send_keys(Keys.ENTER) # 回车
send_keys(Keys.SPACE) #空格键
send_keys(Keys.ESCAPE) #回退键(Esc)

  • 登录禅道
driver.get("http://127.0.0.1:88/zentao/user-login-L3plbnRhby8=.html")
# 清除已有的登录
driver.find_element_by_id('account').clear()
driver.find_element_by_name("password").clear()
# 登录操作
driver.find_element_by_id('account').send_keys('admin')
# 使用tab键将焦点定位到用户名
# driver.find_element_by_id('account').send_key(Keys.TAB)
 time.sleep(4)
driver.find_element_by_name('password').send_keys("Ww123456")
# 用enter键直接登录
driver.find_element_by_name('password').send_keys(Keys.ENTER)
time.sleep(4)
driver.quit()

键盘组合键用法:
send_keys(Keys.CONTROL,'a') #全选(Ctrl+A)
send_keys(Keys.CONTROL,'c') #复制(Ctrl+C
send_keys(Keys.CONTROL,'x') #剪贴(Ctrl+X
send_keys(Keys.CONTROL,'v') #粘贴(Ctrl+V)

driver.find_element_by_id("kw").send_keys("六一儿童节")
driver.find_element_by_id('su').click()
# 用剪贴的方式clear掉文本框中的输入内容
driver.find_element_by_id('kw').send_keys(Keys.CONTROL, 'a')
time.sleep(3)
driver.find_element_by_id('kw').send_keys(Keys.CONTROL, 'X')
time.sleep(4)
driver.find_element_by_id('kw').send_keys('2022')
driver.find_element_by_id('su').click
time.sleep(6)
driver.quit()

鼠标事件

引入工具包:from selenium.webdriver import ActionChains

context_click() 右击

double_click() 双击
drag_and_drop() 拖动
move_to_element()移动

  • 示例:
    (一)双击
from selenium.webdriver import ActionChains
from selenium import webdriver
driver = webdriver.Firefox()
driver.get("https://www.baidu.com/")
driver.find_element_by_id("kw").send_keys("六一儿童节")
b = driver.find_element_by_id('su')
ActionChains(driver).double_click(b).perform()

(二)右击

from selenium.webdriver import ActionChains
from selenium import webdriver
driver = webdriver.Firefox()
driver.get("https://www.baidu.com/")
b = driver.find_element_by_id('su')
ActionChains(driver).context_click(b).perform()


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值