• 0
  • 1
分享

适合项目:

  1. 测试任务明确,不会频繁变动;

  2. 每日构建后的测试验证;

  3. 比较频繁的回归测试;

  4. 软件系统界面稳定,变动少;

  5. 需要在多平台上运行相同测试案例、组合遍历型的测试,大量的重复任务;

  6. 软件维护周期长。

WebDriver API

1、定位元素 (定位一组元素为find_elements_)

  • 根据ID find_element_by_id()

  • 根据Name find_element_by_name()

  • 根据Class find_element_by_class_name()

  • 根据tag find_element_by_tag_name() tag包括<div> <input>

  • 根据连接link

  1. 例如 <a class="demo" name="test" href="http://www.baidu.com">百度</a>

  2. 全名 find_element_by_link_text("百度")

  3. 模糊 find_element_by_partial_link_text("百")

  • 根据XPath定位

  1. 绝对路径定位 find_element_by_xpath("/html/body/div/input[1]") html元素的路径

  2. 元素属性定位 find_element_by_xpath("//input[@id='kw']")

  3. 使用逻辑运算 find_element_by_xpath("//input[@id='kw' and @class='demo']")

  4. 使用谷歌浏览器调试,在元素上右键-Copy-Copy XPath

  • 根据css find_element_by_css_selector()

  1. 有点像JQ,find_element_by_css_selector(".demo") #kw span>input

  2. 使用谷歌浏览器调试,在元素上右键-Copy-Copy selector

2、支持的浏览器

  1. browser=webdriver.Chrome()

  2. browser=webdriver.Firefox()

  3. browser=webdriver.Edge() # Microsoft Edge

  4. browser=webdriver.Safari()

  5. browser=webdriver.Android()

  6. browser=webdriver.BlackBerry()

  7. browser=webdriver.Ie()

  8. browser=webdriver.Opera()

  9. browser=webdriver.PhantomJS()

3、控制浏览器 driver=webdriver.Chrome(); webdriver.Chrome()

  1. 访问 driver.get(url);

  2. 后腿 driver.back()

  3. 前进 driver.forward()

  4. 关闭 driver,quit();

  5. 刷新 driver.refresh()

4、简单元素操作

  1. clear() 清除文本

  2. send_keys(*value) 模拟按键输入

  3. click() 单元元素

  4. submit() 表单提交

  5. size() 返回元素尺寸

  6. text() 获取文本

  7. get_attribute(name) 获取属性值 类似jq的attr

  8. is_displayed() 是否可见

5、鼠标事件 引入 from selenium.webdriver.common.action_chains import ActionChains

  • 常用方法

  1. perform 执行所有ActionChains中储存的行为,类似委托

  2. context_click() 右击

  3. double_click() 双击

  4. drag_and_drop(source,target) 拖动:在源元素上按住鼠标左键,然后移动到目标元素上释放

  5. move_to_element() 鼠标悬浮

  • 操作流程

  1. button=driver. find_element_by_id('kw');

  2. ActionChains(driver).context_click(button).perform();

6、键盘事件 from selenium.webdriver.common.keys import Keys

  1. send_keys(value) 输入框输入内容

  2. send_keys(Keys.BACK_SPACE) 删除键

  3. send_keys(Keys.SPACE) 空格键

  4. send_keys(Keys.TAB) Tab

  5. send_keys(Keys.ESCAPE) 回退

  6. send_keys(Keys.ENTER) 回车

  7. send_keys(Keys.CONTROL,'a') 全选、复制粘贴类似

  8. send_keys(Keys.F1) F1

7、获取验证信息

  1. driver.title 页面title

  2. driver.current_url 当前页面URL

8、设置元素等待

  1. sleep() from time import sleep 单位/秒

9、多表单切换

  1. 定位到iframe元素

  2. driver.switch_to.frame(value) iframe的id或name

  3. switch_to.parent_frame() 跳出当前一级表单

  4. switch_to.default_content() 调回最外层的页面

10、警告框处理 driver.switch_to_alert()

  1. text() 返回文本信息

  2. accept() 接受

  3. dismiss() 解散

11、操作Cookie

  1. get_cookies() 获取所有的cookie

  2. get_cookie(name) 返回key为name的cookie信息

  3. add_cookie(dict) 添加cookie, dcit是字典对象,有key、value

  4. delete_cookie(name,option) 删除cookie,name:cookie名称,option是cookie选项,只是路径、域

  5. delete_all_cookies()

12、调用js 代码

  • driver.execute_script()

13、窗口截图 一般sleep再截图

  • driver.getscreenshot_as_file(path) 文件路径和文件名

作者:你的眼睛能看多远了

原文链接:https://blog.csdn.net/u011210017/article/details/95034906

  • 【留下美好印记】
    赞赏支持
登录 后发表评论
+ 关注

热门文章

    最新讲堂

      • 推荐阅读
      • 换一换
          • API 管理这个话题近些年听到的频次越来越多,这本质上是个 web 领域的发展有关,也和开发协作方式有关--前后端分离代替了全栈工程师 hold all 的局面,强调的更多的是 API 复用、分工和协作细化。 API 管理的重要性不言而喻,每家公司随着业务的发展,多多少少都会涉及到;从开源社区的产品到国内各类商业化产品,可以看到大家对于 API 管理是越来越重视的。为什么需要管理 APILittle story结合自身的开发经历,我们先讨论下,为什么需要管理 API1、在实习的时候是在一家小的游戏公司,人不多,一个产品;当时技术经理的安排是一个后端+一个前端的组合开发,大家都在一个办公室,接口...
            0 0 1296
            分享
          • 子查询含义:出现在其它语句中的select语句,称为子查询、内查询、嵌套查询外部的查询语句,称为为主查询或外查询 分类:案子查询出现的位置:select后面      仅支持标量子查询from后面       支持表子查询※where或having后面    标量子查询※、列子查询※、行子查询(较少)exists后面(相关子查询)按结果集的行列数不同:标量子查询(结果集只有一行一列)行子查询(结果集只有一行多列)列子查询(结果集只有一列多行)表子查询(结果集一般为多行多列) 一、whe...
            15 14 2079
            分享
          • 读者提问:阿常,上节我们讲到测试点不等同于测试用例,想请教你一下,如何把测试点加工成测试用例呢?目前团队中测试人员针对同样的测试点,编写出来的测试用例各不相同,一千个人就有一千个哈姆雷特,108 个测试人员就会有 108 个测试思路,如何保证团队中输出的用例质量呢,有没有比较好的测试设计方法?阿常回答:四步测试设计法。一、建模。即为测试点选择一个适合的模型,将不同测试点划分为四类模型:流程类、参数类、数据类、组合类。1、流程类,通过绘制 “ 流程图 ” 来建立测试模型。2、参数类,通过 “ 输入输出表 ” 来建立测试模型。3、数据类,通过 “ ...
            0 0 1312
            分享
          •   在天网查上看了一下全国软件公司有1000多万家,其中上市的公司有7万多家,也就是占比0.7%。  通过这个数据可以发现,大部分公司从实力和规模上都偏向中型或者小型,也就说其中的流程不一定很健全,甚至没有流程而言。  下图截取了两张数据的图片供参考:图1  全国软件公司数据图2  上市公司数量  为什么要指出这个问题?笔者目前在二线城市,工作10年经历过几家公司,很少有公司把流程制定得很正规和完善。  基本上的形式是:常规瀑布模式和敏捷模式相结合。赶上功能已上线再出现Bug,常见的状态开发快速定位问题进行修改,测试抓紧时间进行测试,测完后上线发布。  所以得出的结论是流程...
            0 0 1775
            分享
          • 软件测试 是软件开发周期中的一个阶段,在此阶段中,对关键业务软件进行正确性,质量和性能验证。软件测试中有四个基本级别,每个级别都在开发过程中从独特的角度检查软件功能。本文详细介绍了集成测试,这是软件测试的第一级。 什么是集成测试?集成测试是软件测试的一个级别,其中将各个单元组合并进行测试,以验证它们在集成时是否按预期工作。这里的主要目的是测试模块之间的接口。由于多种原因,仅单元测试是不够的,例如:模块/单元通常由单独的软件开发人员设计,其技术和编程逻辑与其他程序员不同通常在模块开发时,用户需求会发生变化,并且这些新需求可能未经过单元测试。这引发了问题在单元测试期间,有时会遗漏诸如数据...
            0 0 828
            分享
      • 51testing软件测试圈微信