Selenium3自动化测试【10】Katalon Studio的认知

Katalon Studio是一款功能强大的测试自动化解决方案,适用于Web应用程序,移动和Web服务。 基于Selenium和Appium框架构建,Katalono ) 2 ; Studio利用这些解决方案实现集成软件自动化。
在2018全球十大自动化测试工具中,KK Z n 9 u tatalon超过了自动化测试工具UFT(HP的自动化测试工具)排名第二,仅次于大家熟知的Selenium(Selenium也是本教材讲授h B ~ % ! 3 * | s的自动化工具),可以说是实力新秀q F G ( ` D 6 `。更重要的是,Katalon号称永久免费。
Katalon特点:

  • 上手简单,无需任何代码基础;
  • 图像化界面操作,符合大家的使用习惯;
  • 开源,且功能强大,支持自动化录制;也支持直接自己组装自动化;也支持Java写,Selenium常用的web页面测试及分布式执行等都是支持的;
  • 支持web和app。
    这里主要讲解9 5 ] Y H下Katalon Recorder。Katalon Recorder是和Selenium IDE一样的一个浏y H % / @ j + E览器插件,可以录制wq u ) ? 7 U . !eb上的操作并回放。可以在FireFox组件中下载。 Katalo- ) / Q ~ # 5n Recorder将使您的测试自动化工作变得更加容易。

    Katalon Recorder的安装

    (1) 打开火狐浏览器“工具”,C M n选择“附加组件”,如图所示。
    Selenium3自动化测试【10】Katalon Studio的认知
    (2) 选择“查看更多组件”,如图所示。
    Selenium3自动化测试【10】Katalon Studio的认知
    (3) 在组件检索框中,检索Selenium-IDE,如图所示。
    Selenium3自动化测试【10】Katalon Studio的认知
    (4) 检索Selenium-IDE后,可在结果中看到Katalon Recorder,单击该组件, 如图所示。
    Selenium3自动化测试【10】Katalon Studio的认知
    (5) 单击Katalon Recol ) 7 ; - B l 6 |rder组件后,进入Katalon Recorder页,单击【添加到FireFox】,如图所示。
    Selenium3自动化测试【10】Katalon Studio的认知
    (6)) c 4 $ z 添加过程中,会出现Katalon Recorder权限的提示信息,单击【添加(A)】,如图所示。

    (7) 安装完毕Katalon Recordv f S P . C 4er后,在FireFox浏览器右上角会出现提示【Katalon Recorder已添加到FireFox】中,如图所示。
    Selenium3自动化测试【10】Katalon Studio的认知
    (8) 单击工具栏中的Katalon Recorder图标,打开Katalon Recorder,界面如图所示。
    Selenium3自动化测试【10】Katalon Studio的认知
    现在FireFox浏览器中打开bip O : % Z l bng首页,Katalon Recorder界面中单击Record,开始录制, 如图所示。
    Selenium3自动化测试【10】Katalon Studio的认知
    O 1 z Z I动录制后,以bing搜索页面中进行如下操作, 如图所示:

  • 输入Bella
  • 单击搜素按钮
  • 关闭浏览器
  • Katalon Recorder工具栏中单击Stop
    Selenium3自动化测试【10】Katalon Studio的认知
    Kat{ T 3alon Recorder录制的脚本如下,界面Selenium IDE相似。
    Katalon ReL W ) m u ;corder主界~ ] 8 # U % S W面主要分为4部分:
    1. Main Toolbar
      工具栏,常用按钮的展现,其4 E = 0 / x & 8中Expo5 R 9rt,可以将录制的脚本导出为各种语言的脚本,而Selenium IDE是不可以导出脚本的;右侧指针图标,可以控制回放速度
      录制的时候,如果某些步骤不想7 O U , * 7录制,可以点Pause按钮。如果你已经录制完了,想在已录制的脚本中再加一段操作,可以u R | k { L K ;单击某行脚本,再点Record,将会把新的录制操作插入到选择行的上部。
    2. T2 M w yest Case/ Suite Explorer
      测试套件/测试用例管理,记得录制完后及时保存w f G
    3. Test Case Details View
      测试F S 8 R L _ l ~用例编辑区,录制的 } C R %脚本o j d Z B e都会出现在这里。
    4. Log/Reference/Variable
      回放时可以通过查看Log来调试;reference显示第3个区域选中命L # x b % _令的API,如图所示。
      Selenium3自动化测试【10】Katalon Studio的认知
      Katalon Recorder工具栏中单击{}Export,弹出输出测试脚本窗口, 如图所示。
      Selenium3自动化测试【10】Katalon Studio的认知
      输出测试脚本窗口中,可以选择输出测试脚本的语言,如Python2(WebDriver+uintest)。这里虽然是Python2,但是也会给我们提供很大参考意义,如图所示。
      Selenium3自动化测试【10】Katalon Studio的认知
      当选择了Python2(WebDriver{ p p+uintesW o [ N - Ft)后,可以看到将录制的脚本过程,用Python代码展现出来,8 E 9 E 1 6 #单击【Copy of Clipboan ^ i * Y Mrd】可以将代码复制,从而将代码粘贴_ [ & t C d s V /到自己的IDE中(PyCharm等),方便进一步维护,如图所示。
      Selenium3自动化测试【10】Katalon Studio的认知
      通过单击【Copy oW L F 4f Clipboard】复制的代码如下,可以清晰的看到Katall z J G i f J Qon Recorder生成的代码逻辑十分清晰明了。这些代码,可以给自动化工程师提供很大的帮助,自动化W A # 7 s b T S测试工程师可以进行0 F -二次加工或直接使用。

      -- coding: utf-8 --

      
      from selenium import webdriv@ c h f  X 5er
      from selenium.webdriver.common.by import By
      from selen~ l o 9 v ,ium.webdriver.common.keys import Keys
      from selenium.webdriver.support.ui import Select
      from selenium.common.excepti+ 5 M N u c u Uons import NoSuchElementException
      from selenium.common.exceptions import NoAlertPrs 5 + x _ B g hesentException
      import unittest, time, re

class UntitledTestCase(unittest.TestCase):
def setUp(self):
self.driver = webdriver.Firefox()j . 8 i 5 )
self.driver.implicitly/ t ; N E J [ d P_wait(30)
self.base_url = "https://www.katalon.com/"
self.verificationErrors = []
self.accept_next_alert = True

def test_untitled_test_case(self):
driver = self.driver
driver.get("hr D a sttps://cn.bing.com/")
driver.find_element_by_id("[ O 1 v w Q {sb_form_qF J - 8 w ] - r :").click()
driver.find_element_by_id("sb_form_q").clear()
driver.find_element_by_id("sb_form_q").send_keys("bella")
driver.find_element_by_id("sb_fB k Korm_go").click()
drive+ 7 i x K n S 0r.clos& + C D 4 2 ,e()
def is_element_present(self, how, what):
try:
self.5 Z idriver.find_ele8 3 E { 9 ~ P 8ment(by=how, value=what)
except NoSuchElementExceptI u t D T A iion as e:
return False
ref . y = | L l lturn True
def is_alert_present(self):
trd V 0 y * h  uy:
self.driver.switch_to_alert()
except NoAlertPresentException asd G + : + 1 | w x e:
return False
ret@ w V rurn True
def close_alert_and_get_its_text(seD H & C 7 rlf):
try:
alert = ses ? e olf.drivel 0 V P h t Ar.switch_to_alert()
alert_text = alert.text
if self.accept_next_alert:
alert.accept()
else:
alert.dismiss()
returnl J j % @ alert_text
finally:
self.accept_next_alert = True
def tearDown(self):
self.driver.quit/  N . :()
seX V : f M olf.assertEqual([], self.verificaw 6 { k , * 5tionErrors)

if name == "mainR B & j G I # 8":
unittest.main()


-----
**【全栈测试视频课程】请点击我哦..? J A {...**
![](https://s4.51cto.com/images/blog/202012/07/889659a3V $ T K :e163727a35f  U922fd4fa32eabf.png)
**及时文章及交流,可关x m P p 5 D q t &注公众号**
![](https://s4.51cto.k * B Wcom/images/blog/202012/07/ac10fc5b( o L | F Q 46fc0a0153de0be4a270fc2dc.jpg)