UI自动化测试

UI自动化测试

适用范围:

1.需要回归测试的项目

2.需求变动不频繁,稳定的模块

3.项目周期长的项目

**目的:**提高效率

Selenium

四个导航:

  • get() 打开网页地址地址

  • back() 后退

  • forward() 前进

  • refresh() 刷新

from selenium.webdriver import Chrome
import time
web=Chrome()
web.get('https://www.baidu.com')
time.sleep(3)
web.refresh()
time.sleep(6)

三个页面属性:

  • title 页面的标题

  • current_url 最近打开的网址

  • page_source 页面的源码

web=Chrome()
web.get('https://www.baidu.com')
print(web.title)
print(web.current_url)
print(web.page_source)

两个关闭方法:

  • close():关闭超链接新打开的窗口

  • quit():关闭浏览器所有窗口

driver.get("https://www.baidu.com")
driver.find_element(By.LINK_TEXT,"新闻").click()
time.sleep(3)
driver.close()

一组管理窗口的方法

  • maximize_window

  • get_window_size

  • set_window_size

from selenium import webdriver
import time
driver=webdriver.Chrome()
driver.get("https://www.baidu.com")
driver.maximize_window()
print(driver.get_window_size())
driver.set_window_size(1000,800)
time.sleep(4)
driver.close()

截图:

动态获取 get_screenshot_as_file(‘{}.png’.format(time.strftime(‘%Y%m%d-%H%M%S’)))

driver.get_screenshot_as_file("D:\\{}.png".format(time.strftime('%Y%m%d-%H%M%S')))

元素定位

id,name,class_name,tag_name,link_text,partial_link_text,Xpath,CSS

id:唯一的

通过id搜索辽宁大学

from selenium import webdriver
driver=webdriver.Chrome()
driver.get("https://www.baidu.com")
driver.maximize_window()
driver.find_element_by_id("kw").send_keys("辽宁大学")

name:

可以重复,使用前进行检查

driver.find_element_by_name("wd").send_keys("辽宁大学")

class_name:

重复概率非常高

driver.find_element_by_class_name("s_ipt").send_keys("辽宁大学")

tag_name:

定位标签,单个元素不提倡使用,使用时标签需要首次出现

link_text:

通过超链接打开关于百度

driver.find_element_by_link_text("关于百度").click()

partial_link_text:

超链接里面部分字定位,适用于文本信息过长取部分时。

driver.find_element_by_partial_link_text("关于").click()

一组元素的定位:

打开新闻

els=driver.find_elements_by_tag_name('a')
for el in els:
    print(el.text)
els[3].click()

Xpath:

路径定位:

绝对路径打开新闻

driver.find_element_by_xpath("/html/body/div/div/div[3]/a[1]").click()

相对路径

driver.find_element_by_xpath("//div/div/div[3]/a[1]").click()

属性定位:

搜索辽宁大学

driver.find_element_by_xpath("//input[@id='kw']").send_keys("辽宁大学")

属性与逻辑定位:

driver.find_element_by_xpath("//input[@id='kw'and@name='wd']").send_keys("辽宁大学")

文本定位:

driver.find_element_by_xpath("//a[text()='新闻']").click()

CSS:

id:

driver.find_element_by_css_selector("#kw").send_keys("辽宁大学")

属性:

driver.find_element_by_css_selector("[type='submit']").click()

class:

driver.find_element_by_css_selector(".s_ipt").send_keys("辽宁大学")

.代替类名

元素操作

清除.clear()

先搜索辽宁大学之后搜索辽宁科技大学

from selenium import webdriver
import time
driver=webdriver.Chrome()
driver.maximize_window()
driver.get("http://baidu.com")
driver.find_element_by_css_selector(".s_ipt").send_keys("辽宁大学")
time.sleep(2)
driver.find_element_by_css_selector(".s_ipt").clear()
driver.find_element_by_css_selector(".s_ipt").send_keys("辽宁科技大学")

点击.click()

传值.send_keys(“”)

获取元素

为了断言

搜索框大小:

b=driver.find_element_by_css_selector(".s_ipt").size
print(b)

超链接的文本内容:

.text

链接地址:

.get_attribute()

标签是否可见:

.is_displayed()

按钮是否可用:

.is_enabled()

复选框是否选中:

.is_selected()

鼠标操作

悬停

from selenium import webdriver
from selenium.webdriver.common.action_chains import ActionChains

driver=webdriver.Chrome()
driver.maximize_window()
driver.get("http://baidu.com")
action=ActionChains(driver)
move=driver.find_element_by_class_name("aging-entry-inner")
action.move_to_element(move).perform()

双击

double=driver.find_element_by_xpath("//a[text()='新闻']")
action.double_click(double).perform()

拖动

  1. div1=driver.find_element_by_id("div1")
    div2=driver.find_element_by_id("div2")
    action.click_and_hold(div1).move_to_element(div2).release().perform()
    
  2. action.drag_and_drop(div1,div2).perform() 
    
  3. print(div1.location)
    print(div2.location)
    action.drag_and_drop_by_offset(div1,xoffset=162,yoffset=0).perform()
    

    {‘x’: 8, ‘y’: 8}
    {‘x’: 170, ‘y’: 8}

键盘操作

搜索辽宁大学按enter然后全选删除

from selenium import webdriver
from selenium.webdriver.common.keys import Keys
import time
driver = webdriver.Chrome()
driver.maximize_window()
driver.get("http://baidu.com")
driver.find_element_by_id("kw").send_keys("辽宁大学")
driver.find_element_by_id("kw").send_keys(Keys.ENTER)
time.sleep(2)
driver.find_element_by_id("kw").send_keys(Keys.CONTROL,'a')
time.sleep(2)
driver.find_element_by_id("kw").send_keys(Keys.BACKSPACE)

隐式等待Implicitly_Wait()

找到定位元素则不等待。

显示等待WebDriverWait()

from selenium import webdriver
from selenium.webdriver.support.wait import WebDriverWait
driver = webdriver.Chrome()
driver.maximize_window()
driver.get("http://baidu.com")
WebDriverWait(driver,10).until(lambda x:x.find_element_by_id("kw")).send_keys("辽宁大学")

Alert(弹窗)

alert处理

from selenium import webdriver
import time
driver = webdriver.Chrome()
driver.maximize_window()
driver.get("file:///D:/demo.html")
driver.find_element_by_class_name("alert").click()
time.sleep(2)
driver.switch_to_alert().accept() *#* *点击确定按钮
*driver.find_element_by_class_name("confirm").click()
time.sleep(2)
driver.switch_to_alert().dismiss() *#* *点击取消按钮
*driver.find_element_by_class_name("prompt").click()
time.sleep(2)
driver.switch_to_alert().send_keys("hello world") *#* *输入内容
*driver.find_element_by_class_name("order-confirm").click()
time.sleep(10)
print(driver.switch_to_alert().text) *#* *获取弹窗文本*

多窗口处理

利用driver.window_handles获取每个窗口的句柄

driver.switch_to_window(句柄)切换窗口

driver.switch_to_frame(名,标签,元素定位)

driver.switch_to.default_content()回到默认首页

验证码处理

  • 开发去掉验证码
  • 验证码设置成一样的
  • 验证码识别技术
  • 记录cookie跳过登陆

cookie注入:

driver.add_cookie()
driver.add_cookie({'name':'uname','value':'zcmg'})
driver.add_cookie({'name':'user_id','value':'2593'})
time.sleep(2)
driver.refresh()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Zcmg

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

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

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

打赏作者

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

抵扣说明:

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

余额充值