当前位置: 首页 > news >正文

总结Selenium自动化测试方法(四)WebDriver常用的操作

四、WebDriver常用的操作

1、控制浏览器操作

#控制浏览器的大小

self.driver.set_window_size(480,800)

#控制浏览器返回

self.driver.back()

#控制浏览器前进到下个页面

self.driver.forward()

#刷新当前页面

self.driver.refresh()

2、控制页面元素的简单操作

#清除文本操作

self.driver.find_element_by_xpath("/div/div[2]/div/div/div").clear()

#模拟键盘输入值

self.driver.find_element_by_xpath("/div/div[2]/div/div/div").send_keys(“urstest@163.com”)

#点击元素

self.driver.find_element_by_xpath("/div/div[2]/div/div/div").click()

#提交表单

self.driver.find_element_by_xpath("/div/div[2]/div/div/div").submit()

#返回输入框尺寸

size=self.driver.find_element_by_xpath("/div/div[2]/div/div/div").size

print(size)

#返回文本内容

text=self.driver.find_element_by_xpath("/div/div[2]/div/div/div").text

print(text)

#返回元素的属性值

attribute1=self.driver.find_element_by_xpath("/div/div[2]/div/div/div").get_attribute(‘id’)

print(attribute1)

attribute2=self.driver.find_element_by_xpath("/div/div[2]/div/div/div").get_attribute(‘name’)

print(attribute2)

attribute3=self.driver.find_element_by_xpath("/div/div[2]/div/div/div").get_attribute(‘type’)

print(attribute3)

#返回元素的结果是否可见,返回结果是True或是False

result=self.driver.find_element_by_xpath("/div/div[2]/div/div/div").is_displayed()

print(result)

#返回页面标题

title=self.driver.title

print(title)

#返回页面url

url=self.driver.current_url

print(url)

#上传文件,上传文件相当于给元素传值,可以用send_keys()函数

self.driver.find_element_by_xpath("/div/div[2]/div/div/div").send_keys(‘D:\\upload_file.txt’)

3、鼠标操作

首先要导入鼠标操作的Actionchains类

#引入Actionchains类

from selenium import webdriver

from selenium.webdriver.common.action_chains import ActionChains

然后就可以用下面的这些函数进行鼠标的操作了

#左键用上面讲到的click()函数就可以了

#右键

right_click= self.driver.find_element_by_xpath("/div/div[2]/div/div/div")

ActionChains(driver).context_click(right_click).perform()

#双击

double_click= self.driver.find_element_by_xpath("/div/div[2]/div/div/div")

ActionChains(driver).double_click(double_click).perform()

#拖拽

#拖拽的原位置

element= self.driver.find_element_by_xpath("/div/div[2]/div/div/div")

#拖拽的目标位置

target= self.driver.find_element_by_xpath("/div/div[2]/div/div/div[2]")

#执行拖拽

ActionChains(driver).drag_and_drop(element,target).perform()

4、键盘操作

首先要导入键盘操作的Keys类

#引入Keys类

from selenium import webdriver

from selenium.webdriver.common.keys import Keys

然后就可以用下面的这些函数进行键盘的操作了

#输入内容:用之前的send_keys()函数即可

#回删内容

text= self.driver.find_element_by_xpath("/div/div[2]/div/div/div")

text.send_keys(Keys.BACK_SPACE)

#输入空格及内容

text= self.driver.find_element_by_xpath("/div/div[2]/div/div/div")

text2=text.send_keys(Keys.SPACE)

text2.send_keys(u“就是啊”)

#全选内容ctrl+a

text= self.driver.find_element_by_xpath("/div/div[2]/div/div/div")

text.send_keys(Keys.CONTROL,’a’)

#剪切内容ctrl+x

text= self.driver.find_element_by_xpath("/div/div[2]/div/div/div")

text.send_keys(Keys.CONTROL,’x’)

#粘贴内容ctrl+v

text= self.driver.find_element_by_xpath("/div/div[2]/div/div/div")

text.send_keys(Keys.CONTROL,’v’)

#回车

text= self.driver.find_element_by_xpath("/div/div[2]/div/div/div")

text.send_keys(Keys.ENTER)

5、元素等待操作

①显示等待

原理:显式等待,就是明确的要等到某个元素的出现或者是某个元素的可点击等条件,等不到,就一直等,除非在规定的时间之内都没找到,那么就跳出Exception.(简而言之:就是直到元素出现才去操作,如果超时则报异常)

②隐式等待

原理:隐式等待,就是在创建driver时,为浏览器对象设置一个等待时间。这个方法是得不到某个元素就等待一段时间,直到拿到某个元素位置。

注意:在使用隐式等待的时候,实际上浏览器会在你自己设定的时间内不断的刷新页面去寻找我们需要的元素

③休眠方法sleep

需要导入sleep类

#引入sleep类

from selenium import webdriver

from time import sleep

time.sleep(3)

6、处理验证码(验证码是阻碍自动化测试的部分,所以要想办法绕开这个环节)

①注释掉验证码部分的代码

②设置一个万能验证码

③验证码的识别技术

④记录cookie,来跳过登录的部分

转载于:https://www.cnblogs.com/linyuchen2008/p/6040421.html

相关文章:

  • js 时间与时间戳的转换
  • HTTP——学习笔记(1)
  • ORACLE 体系结构
  • 数字证书调研整理-基本概念
  • delphi 中sql的语法规范
  • sql数据库链接
  • 脱水缩合
  • AIDL小结
  • jQuery简单的Ajax调用示例
  • 作业1:灯泡问题
  • Tomcat之web项目部署
  • 学习什么是线程安全与线程不安全(转)
  • 第七次实验作业
  • 使用IntelliJ IDEA 14和Maven创建java web项目
  • C# IEqualityComparer 去重
  • python3.6+scrapy+mysql 爬虫实战
  • 【挥舞JS】JS实现继承,封装一个extends方法
  • Angularjs之国际化
  • E-HPC支持多队列管理和自动伸缩
  • Java 23种设计模式 之单例模式 7种实现方式
  • Java方法详解
  • java架构面试锦集:开源框架+并发+数据结构+大企必备面试题
  • Linux快速配置 VIM 实现语法高亮 补全 缩进等功能
  • Next.js之基础概念(二)
  • nfs客户端进程变D,延伸linux的lock
  • swift基础之_对象 实例方法 对象方法。
  • 安卓应用性能调试和优化经验分享
  • 百度贴吧爬虫node+vue baidu_tieba_crawler
  • 闭包--闭包之tab栏切换(四)
  • 警报:线上事故之CountDownLatch的威力
  • 爬虫进阶 -- 神级程序员:让你的爬虫就像人类的用户行为!
  • 如何使用Mybatis第三方插件--PageHelper实现分页操作
  • 数组大概知多少
  • 我有几个粽子,和一个故事
  • 项目实战-Api的解决方案
  • 移动互联网+智能运营体系搭建=你家有金矿啊!
  • 译米田引理
  • 用mpvue开发微信小程序
  • 积累各种好的链接
  • 教程:使用iPhone相机和openCV来完成3D重建(第一部分) ...
  • ​ ​Redis(五)主从复制:主从模式介绍、配置、拓扑(一主一从结构、一主多从结构、树形主从结构)、原理(复制过程、​​​​​​​数据同步psync)、总结
  • ​3ds Max插件CG MAGIC图形板块为您提升线条效率!
  • #define,static,const,三种常量的区别
  • #include
  • (Matalb分类预测)GA-BP遗传算法优化BP神经网络的多维分类预测
  • (附源码)springboot教学评价 毕业设计 641310
  • (六)vue-router+UI组件库
  • (三)c52学习之旅-点亮LED灯
  • (已解决)vue+element-ui实现个人中心,仿照原神
  • (原创)boost.property_tree解析xml的帮助类以及中文解析问题的解决
  • (转)关于多人操作数据的处理策略
  • (转载)从 Java 代码到 Java 堆
  • **CI中自动类加载的用法总结
  • .net 7 上传文件踩坑
  • .net mvc actionresult 返回字符串_.NET架构师知识普及