首页 > 编程语言 >python_selenium(部分笔记)

python_selenium(部分笔记)

时间:2023-03-07 09:35:27浏览次数:44  
标签:__ 定位 name python selenium driver 笔记 windows 标签

什么是自动化?
自动化就是以人力驱动的测试行为转化为机械执行的一种过程
目的:节省人力,时间或者硬件资源,提高测试效率

哪些场景下适合做自动化?
1,任务测试明确,不会频繁变动
2,每日构建后的测试验证
3,比较频繁的回归测试
4,软件系统界面稳定,变动少
5,需要在多平台上运行的相同测试案例,组合遍历性的测试,大量的重复任务
6,软件维护周期长,
7,项目进度压力不大
8,被测软件系统开发比较规范,能够保证系统的可测试性
9,测试人员具备较强的编程能力

自动化不能完全代替手工测试
因为刚开发的功能还不稳定,可能有很多问题


常见的测试工具
monkey
selenium
jmeter
postman


八大定位元素
id  ,
name,
class,(有空格隔开的部分,需要用逗号或者点好进行连接)
link__text(链接文本,文本全称),
partal_link_text(模糊文本查询)
tag_name(标签)    ele_input_box =driver.find_elements_by_tag_name('input')
        ele_name = ele_input_box[0]
        ele_name.send_keys('三毛')
xpath
         绝对路劲定位查询:html/body/div/div/div/from/span[1]/input[3]
         相对路径定位查询:/从跟节点开始,,//所有的子节点,,//*任意标签


精确属性值定位://标签名【@属性名=属性值】
    ‘//*【@id="kw"】'
    '//input[@id="kw"]'
模糊属性值定位;//标签名【contains(@属性名,属性部分值)】
    ’//a[contains(@wdfield,"work")]‘
精确文本定位://标签名【text()="标签的文本值"】
    ’//a[text()="视频"]‘
模糊文本定位://标签名【contains(text(),标签文本值)】
    ’//a[contains(text(),"视")]‘
起始属性值定位://标签名【starts-with(@属性名,属性开头部分值)】
    ’//*【starts-with(@autocomplete,"o")】‘

css选择器定位:
    find_element_css_selector('#kw')

nth-child(n);选择器选择父元素中的第N个子元素,元素类型没有限制
last-child:父子节点底下的最后一个子标签,,,,firest-child

有点不懂
 性名')
    通过id获取name的值
    name = driver.find_element_by_id('kw').get_attribute('name')

通过父级标签定位;
by类定位:  find_element(BY.ID,"kw")

浏览器的基本操作:
    最大化:driver.maximize_windows()
    最小化:driver.minimize_windows()
    获取窗口大小:print(driver.get_windows_size()
    设置窗口大小:driver.set_windows_size(宽,高尺寸))
    刷新窗口:driver.refresh()
    对文本框清除:.clear()
键盘的基本操作:
    .send_keys(Keys.CONTROL,'a')全选
    .send_keys(Keys.CONTROL,'ENTER')按回车键
    
鼠标的基本操作:
    右击搜索框  ele = driver.find_element_by_id("kw")
    Actionchains(driver).context_click(ele).perform()
            click()单击
            double_click()右击
            move_to_element()鼠标悬停在某个元素上
            click_and_hold()按下鼠标左键在一个元素上
        
js滚动条:
    js = argument[0].scrollIntiView()
    然后通过驱动器对象调整:execute_scrip(js脚本,显示的元素)
    定位居家优品
    wntj = driver.find_element_by_id_("J_feeds")
    js = "arguments[0].scrollIntoView()"
    driver.execute_script(js,wntj)

元素定位不到可能出现的原因:
1,有数据加载 SLEEP
2,定位是否正确
3,是否有句柄
4,登陆前后
5,代码操作的对象和定位元素的时候所在页面是否一样
6,iframe框架

浏览器窗口切换(句柄)
获取当前窗口的句柄:current_windows_handle
获取所有窗口的句柄:driver.windows_handles
切换到新的窗口:driver.switch_to.windows[-1]  or second_windows_handle

3种等待方式
sleep
隐式等待:driver.implicitly_wait(10)
显示等待:    ①:from selenium. webdriver.common.by import By
        ②:form selenium.webdriver.support.wait import WebDriverWait
        ③:from selenium.webdriver.support import expected_conditions as EC
    定位等待三毛,,百度百科等待
    ele =WebDriverWait(driver.30).until(EC.presence_of_element_located(By.XPATH,'//*[@id="l"]/h3/a'))
    ele.click()

进入iframe框架:
    ①退到iframe最外层:driver.switch_to.default_content()
    ②退出到上一层:driver.switch_to.parent_frame()

select下拉框处理:
    Select(变量).select_by_visible_text("文本"),文本定位
    Select(变量).select_by_value('value'),value定位
    Select  (变量).  select_by_index('1')通过索引定位

随机对象:
    list1 =["1","2","3","4","5"]
    list2 = ['7','23','32','34','324']
    random.choice(list1)
    random.radint(1,100)

alert框处理
    获取弹框的文本;driver.switch_to.alert.text()
    点击弹框的取消按钮:driver.switch_to.alert.dismiss()
    点击弹框上的确定按钮:driver.switch_to.alert.accept()

断言:


封装的基本思路:
1,编写线性业务流程脚本
2,业务数据转换成参数形式
3,封装到不同类的方法中;(代码分层)
4,调用不同方法合成流程脚本
5,从文件读取数据到脚本中:(数据分离)

为什么要做数据分离:
把数据写到数据配置文件中,减少代码的维护工作
(定位元素数据的分离)


代码分层:
case ——用例层
common ——公共层
data_config ——数据配置
page ——页面流程代码
result ——结果(截图,报告,日志)
runner ——运行测试套,执行报告并且打印
main ——整个项目的入口
 

open打开之后,中间的代码有问题,不会自动关闭
with open as 需要一个别名,中间的代码不管正确与否都会关闭
yum文件:
①打开一个文件
②return yam.safe_load(打开的文件)

excel文件
打开工作簿
openpyxl.load_workbook(文件路径)
选择sheet页

自动获取路径
os.path.dirname(__file__)

构造方法  __init__初始化数据
析构方法  __del__对类的资源进行清理
对象说明方法  __str__将实例化的对象按照自定义的字符串的形式显示出来

异常处理
try.....except
当try下面的代码正常,则不执行except的代码

try.....except.....else
当try代码正常,则不执行except,但是要执行else
当try代码不正常,则执行except,不执行else

try......finally
不管try代码正确都要执行finally

try.....except.....finally
不管try的代码是否正常,都会执行finally,但是当try异常,会执行except
 

数据库:
使用commit语句提交。

遇到验证码怎么处理??
pillow插件
截图并裁剪验证码












标签:__,定位,name,python,selenium,driver,笔记,windows,标签
From: https://www.cnblogs.com/IceSparks/p/17186955.html

相关文章

  • python—基础知识(部分笔记)
    命名注释快捷键变量名复制运算格式化字符   ①:%s格式化字符串   ②:%d格式化整数   ③:%f格式化浮点数字   ④:format()转义字符:\n  \t算术运算符:%取余......
  • pytest-笔记
    pytest的固件   模块级别   类级别   函数级别   方法级别setup_module(),teardown_module():(模块级别)一前一后,必须写成声明的函数,不能加self,可以实现整个......
  • requests-笔记
    第一个函数requests.request()post请求 data=""(字典或者元组的列表)get请求params=""(字典,元组的列表)服务器不支持json传入数据,headers来设置请求头信息,(字典的形式传入)co......
  • 接口测试—笔记
    fiddler监听端口为:8888HTTP:从万维网服务器传输超文本到本地浏览器的传送的传输协议tcp/ip协议族的四个层级应用层:HTTP/telent/ftp等传输层:tcp/udp网络层:ip/icmp/igmp链路......
  • Selenium CHANGELOG[最新版本4.8.2 计划中]
    SeleniumCHANGELOG[持续更新]源文件https://github.com/SeleniumHQ/selenium/blob/trunk/py/CHANGES搬运工对重点版本做时间标注,具体时间点可以参考https://github.c......
  • python-模块与包
    一、模块模块的本质:具有一定功能(代码)的py文件,或者是文件夹,就是你之前写的代码有功能的都可以叫模块1、python模块的历史python刚开始的时候,所有搞其他编程语言的的程序......
  • selenium窗口之间的切换
    importtimefromselenium.webdriverimportEdgefromselenium.webdriver.common.byimportByfromselenium.webdriver.common.keysimportKeys#键盘输入#1.......
  • 斜率优化学习笔记
    P3195[HNOI2008]玩具装箱容易推出式子\(dp[i]=min(dp[i],dp[j]+(i-j-1+s[i]-s[j]-L)^2)\)故设\(A[i]=i+s[i]-L-1\)(与\(j\)无关的项)\(B[i]=i+s[i]\)故如果\(dp......
  • Python 异步: 异步迭代器(15)
    动动发财的小手,点个赞吧!迭代是Python中的基本操作。我们可以迭代列表、字符串和所有其他结构。Asyncio允许我们开发异步迭代器。我们可以通过定义一个实现aiter()和......
  • jenkins学习笔记之九:jenkins认证集成github
    1.github创建OAuth2.jenkins安装并配置github认证插件jenkins配置使用github认证 3.注销重新登录      ......