selenium

selenium WebDriver

是客户端API接口,测试人员通过调用这些接口,来访问浏览器驱动,浏览器驱动再访问浏览器
WebDriver属性:

  1. driver.name 浏览器名称
  2. driver.title 浏览器标题
  3. driver.current_url 浏览器当前url
  4. driver.page_source 当前页面源码
  5. driver.current_window_handle 当前窗口句柄
  6. driver.window_handles 所有窗口句柄
  7. driver.close 关闭当前页面
  8. driver.quit 关闭浏览器
  9. driver.back 浏览器回退
  10. driver.forward 浏览器前进
  11. driver.refresh 浏览器刷新
  12. driver.switch_to_alert() 切换到alert
1.selenium中操作弹窗通常需要切换到弹窗上下文中,这是因为弹窗(alert、confirm、prompt)通常不是页面的一部分,而是浏览器的原生对话框,这意味着它们不在常规的DOM树中,因此不能像普通页面元素那样直接通过find_element来操作
2.在vue.js中处理弹窗与处理浏览器原生的弹窗有所不同。其弹窗通常是通过组件或第三方库实现的,这些弹窗是页面的一部分,因此可以像普通元素一样交互
  1. driver.switch_to.active_element() 切换到活动的元素
  2. driver.switch_to.frame() 切换到指定的iframe或者frame
  3. driver.switch_to.window() 切换到指定的窗口
  4. driver.set_window_size(x,y) 设置浏览器大小
  5. driver.maximize_window() 最大化浏览器

selenium的三种等待方式

  1. 强制等待:time.sleep
    缺点:项目中最忌讳使用这种方式进行等待,当网络条件良好时,依旧按照预设定时间继续等待,导致整个项目时间无限延长
  2. 隐式等待:implicity_wait()
    实际是设置一个最长等待时间,如果在规定时间内网页加载完成,则执行下一步,否则一直等待到时间结束,然后再执行下一步,隐式等待对整个driver周期都起作用,在最开始设置一次就可以了
    缺点:因为JavaScript一般是放在我们的body的最后进行加载,实际页面上的元素都已加载完成,却还在等待全部页面加载结束
  3. 显示等待
    webdriverwait
    (1)参数:
    driver:浏览器驱动
    timeout:等待时间
    poll_frequency:检查频率
    (2)方法
    untill()
    method:在等待期间,每隔一个时间段调用这个传入的方法,直到返回值是true
    message:允许你在抛出的异常中加入自定义的消息
    untill_not()
    method:在等待期间,每隔一个时间端调用这个传入的方法,直到返回值是false
    message:允许你在抛出的异常中加入自定义的消息

使用环境

1.网络不稳定
2.页面使用Ajax异步加载机制
什么是Ajax呢?
是一种无需重新加载整个网页的情况下,能够更新部分网页技术,它允许网页在后台与服务器进行数据交换,从而实现局部刷新和动态内容加载

selenium的等待条件

等待条件来自于expected_conditions模块,这些条件用于配合webDriverWait类来实现显示等待

  • persence_of_element_located:等待某元素出现在DOM中,不一定可见
  • visibility_of_element_located:等待某个元素不仅存在DOM中,而且可见
  • invisiblity_of_element_located:等待元素不在DOM中或不可见
  • element_to_be_clickable:等待某个元素可以被点击
  • title_is(“Expected Title”):等待页面标题完全等于给定的字符串
  • title_contains:等待页面标题包含给定的字符串
  • frame_to_be_available_and_switch_to_it:等待一个iframe或frame加载完成,并切换到该iframe或frame上
  • alert_is_presnet:等待页面中出现alert
  • text_to_be_persent_in_element((x,y), “Excepted Text”):等待某个元素的文本包含给定的文本
  • element_to_be_selected:等待元素被选中
  • element_located_to_be_selected:等待某个位于 DOM 中的元素被选中

selenium的鼠标事件

在WebDriver中,将这些鼠标操作的方法封装在ActionChains类中。
ActionChains类中提供了鼠标操作的常用方法:

  • perform():执行所有ActionChains中存储的行为
  • click(element):单击
  • context_click(element):右击
  • double_click(element):双击
  • drag_and_drop(elemnt,target_element):拖动至target_element中并释放
  • drag_and_drop_by_offset(element,x,y):拖拽Element至位置(x,y)
  • move_to_element(element):鼠标悬浮、移动到元素
  • click_and_hold(element):按下鼠标左键
  • release(element):释放鼠标左键

selenium的键盘事件

Keys()类提供了键盘上几乎所有按键的方法,使用send_keys()方法输入键盘上的按钮。
注意的是:要先定位到输入框
常用的键盘操作:

  • send_keys(Keys.BACK_SPACE)删除键
    一次只能删除一个字符,要删除多个可以使用乘积
    send_keys(4*Keys.BACK_SPACE)
  • send_keys(Keys.SPACE)空格键
  • Keys.TAB制表键
  • keys.ESCAPE回退键
  • Keys.ENTER回车键
  • send_keys(Keys.CONTROL,‘a’)全选
  • send_keys(Keys.CONTRL,‘c’)复制
  • send_keys(Keys.CONTRL,‘X’)剪切
  • send_keys(Keys.CONTRL,‘V’)粘贴
  • send_keys(Keys.F1)键盘F1

获取断言信息

断言其实就是判断这个操作是否成功

  • 断言页面标题
  • 断言元素文本
  • 断言元素存在
  • 断言元素属性

selenium执行JavaScript脚本

1.可以允许你直接与浏览器交互,执行那些selenium本身可能无法直接完成的任务
2.用途:
(1)修改DOM元素
(2)获取页面信息,如滚动位置、元素属性等
(3)滚动页面
(4)模拟用户交互等
3.两种实现方式
(1)同步执行
execute_script(script,*args)

参数:
	script:要执行的JavaScript脚本字符串
	args:可选参数,表示要传递给脚本的任何参数
(2)异步执行
execute_async_script()
在web开发中,很多操作是异步的,这意味着他们不会立即完成,例如,当你点击一个按钮后,可能会有一个 AJAX 请求去服务器获取数据,然后更新页面。这种情况下,如果你只是简单地等待一段时间,可能无法保证页面已经完全加载完毕。使用 execute_async_script 的关键在于告诉 Selenium 什么时候异步操作完成了。
参数:同上

上传下载文件

上传文件
常见的web页面的上传,一般使用input标签或者是插件(JavaScript、Ajax),对于input标签的上传可以使用send_keys(路径)来进行上传。
下载文件
文件下载比较复杂,因为浏览器默认设置不会自动下载文件,而是会询问用户如何处理,浏览器要想实现文件下载,需要配置浏览器自动下载文件,并指定文件保存的路径。通过add_experimental_option添加prefs参数。(谷歌)

  • download.default_directory:设置下载路径
  • profile.default_content_settings.popups:0 禁止弹出窗口。

selenium屏幕截图

在selenium中,屏幕截图是一个非常实用的功能,可以帮助你在自动化测试过程中捕获网页状态,对于调试问题、验证视觉变化和记录测试结果都非常有帮助。
selenium WebDriver提供了相关方法:
1.driver.get_screenshot_as_file(filename):
将当前窗口的屏幕截图保存为png图像文件。 如果有任何io错误返回false,否则返回true。使用完整 文件名中的路径
2.driver.save_screenshot(self,filename):
将当前窗口的屏幕截图保存为PNG图像文件。如果存在IOError,则返回False,否则返回True。使用完整文件名中的路径
3.driver.get_screen_as_png():
以二进制数据的形式获取当前窗口的屏幕截图
4.driver.get_screen_as_base64():
以base64编码字符串的形式获取当前窗口的屏幕截图 这是有用的嵌入图像在html

  • 10
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值