软件测试之WEB自动化

1.WEB自动化环境配置

1.1webdriver配置

        以chrome浏览器为例,从https://registry.npmmirror.com/binary.html?path=chromedriver中下载对应chrome浏览器版本号的chromedriver,解压将文件放到自己指定的位置,在环境变量中配置此位置,不能有中文特殊字符。

 1.2selenium安装

        pycharm 安装 selenium

        pip install selenium

        pycharm 项目文件中引用 selenium

         from selenium import webdriver

2.WEB自动化相关API

2.1浏览器操作API

  • 打开页面:driver.get("url")
  • 关闭:driver.quit()结束进程        driver.close()仅关闭当前窗口
  • 设置窗口大小:driver.set_window_size(500,500)
  • 窗口最大化:driver.maximize_window()
  • 窗口最小化:driver.minimize_window()
  • 刷新页面:driver.refresh()
  • 获取页面标题:driver.title
  • 获取当前页面url:driver.current_url
  • 获取当前页面截图:driver.get_screenshot_as_file("a.png") 括号内为保存截图的地址+文件名

相关代码:

from selenium import webdriver

driver = webdriver.Chrome()  #实例化Chrome对象

driver.get("https://www.baidu.com")   #打开百度

driver.set_window_size(500,500)    #设置窗口大小

driver.minimize_window()   #最小化窗口

driver.maximize_window()   #最大化窗口

driver.refresh()    #刷新页面

title = driver.title
url = driver.current_url
print(title,url)

打印结果:

 2.2常用的八种定位方式

  • id
  • name
  • class name 
  • tag name
  • link text   <a>标签
  • partial link text   <a>标签
  • xpath(通用,可以在chrome中用$x调试)   $x("//div[@class='header-top']")
  • css selector(通用,可以在chrome中用$$调试)

代码参考:

from selenium import webdriver

driver = webdriver.Chrome()  #实例化Chrome对象

driver.get("https://www.baidu.com")   #打开百度

ele1 = driver.find_element("xpath","//input[@id='kw']")

ele2 = driver.find_element("id","kw")

print(ele1==ele2)   #True,上边两种方式等价

Xpath:指的是XML path

绝对路径表示法:指从/目录开始的路径表示法,必须根据实际路径逐级表示

相对路径表示法:指从目标对象所在位置根据其父对象进行路径表示的方法

        ele1 = driver.find_element("xpath","//input[@id='kw'][@name='xx']/div")

find_element与find_elements

find_element根据指定的方式定位元素,仅返回找到的第一个元素,如果没有元素符合则返回none

find_elements根据指定的方式定位元素,以列表的形式返回找到的全部元素,如果没有符合的元素则返回空列表,可以通过下标去选择列表中的元素

2.3元素操作API

clear():清楚文本框中的文字

send_keys():向文本域或文件上传按钮发送文字内容

click():点击按钮

text:获取节点上的文字信息

get_attribute(name):获取元素的属性信息

is_displayed():判断元素是否显示出来

2.4三种等待方式

  • 强制/固定等待

       优势:用法非常简单,一般用于项目调试,或者用于等待元素状态、文本发生改变。

       劣势:等待时间固定,如果脚本中大量使用会导致脚本运行效率低。

  代码参考:

import time

time.sleep(2)   #单位秒
  • 隐式等待/全局等待

       设置一次后(隐式等待只需设置一次),全局有效,在元素没有出现时最多只等待指定的时间,但如果在等待时间内,什么时候元素出现什么时候停止等待。隐式等待只能在元素不存在DOM中时能生效,否则不会产生任何等待效果。

代码参考:

driver.implicitly_wait(5)    #单位为秒
  • 显示等待

       可针对每一个元素进行单独设置,等待条件更加灵活,

       注意:如果显式等待和隐式等待同时设置,以最长等待时间为准。

from selenium import webdriver
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

driver = webdriver.Chrome()
driver.get("http://shop-xo.hctestedu.com/")
WebDriverWait(driver,10).until(EC.presence_of_element_located(("id","search-input")))  #这里参数是一个元组
driver.find_element("id","search-input").send_keys('你好')

常见EC方法:

EC.title_is(strtitle):判断当前页面的title是否精确等于预期

EC.title_contains(strtitle):判断当前页面的title是否包含指定字符串

EC.presence_of_element_located(locator):判断某个元素是否被加到了dom树中,并不代表该元素一定可见

EC.visibility_of_element_located(locator):判断某个元素是否可见,可见代表元素非隐藏,并且高和宽都不等于0

EC.invisibility_of_element_located(locator):判断某个元素是否不可见

EC.element_to_be_clickable(locator):判断某个元素是否可见并且时enable

EC.text_to_be_present_in_element(locator):判断某个元素中的text是否包含了预期的字符串

driver.get('https://mail.163.com/')
WebDriverWait(driver,5).until(EC.text_to_be_present_in_element(('id','msg'),'等待出现的内容'))

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值