zoukankan      html  css  js  c++  java
  • Selenium基础篇之5-第一个完整的自动化测试脚本

    前面文章,我们介绍了如何采用XPath表达式去定位网页元素,在掌握了如何抓取或者如何书写精确的XPath表达式后,我们可以开始写自己的第一个真正意义上的webui 自动化测试脚本,就相当于,你在学习Python,如何在控制台打印Hello,Python! 一样。

          我们的测试用例是:打开百度首页,搜索Selenium,然后检查搜索列表,有没有Selenium这个官网链接选项。

          在写自动化脚本之前,需要明确手动脚本的步骤,然后去拆分到具体没一个步骤做什么,考虑好了之后,才开始动手去写脚本。我把这个测试场景分拆如下步骤:

    1) 启动后浏览器,这里我们用Chrome

    2) 打开百度首页,https://www.baidu.com

    3) 定位搜索输入框,记录下输入框元素的xpath表达式://*[@id='kw']

    4) 定位搜索提交按钮(百度一下这个按钮),获取xpath表达式://*[@id='su']

    5) 在搜索输入框输入“Selenium”,点击百度一下这个按钮。

    6) 在搜索结果列表去判断是否存在Selenium官网这个链接。

    7) 退出浏览器,结束测试。

    如果,还不会通过火狐浏览器上插件firepath获取元素的表达式,请看上一篇文章。如果你没有安装Chrome,那就用Firefox。

    1) 桌面新建一个记事本,命名并保存为FirstScript.py

    2) 输入如下代码片段到FirstScript.py,保存

    3) 打开cmd窗口,切换到桌面路径下,然后通过python FirstScript.py 来执行脚本。

    FirstScript.py脚本如下

    # coding=utf-8
    import time
    from selenium import webdriver

    driver = webdriver.Chrome() # 打开chrome,如果没有安装chrome,换成webdriver.Firefox()
    driver.maximize_window() # 最大化浏览器窗口
    driver.implicitly_wait(8) # 设置隐式时间等待

    driver.get("https://www.baidu.com") # 地址栏输入百度地址
    driver.find_element_by_xpath("//*[@id='kw']").send_keys("selenium") # 搜索输入框输入Selenium
    driver.find_element_by_xpath("//*[@id='su']").click() #点击百度一下按钮

    # 导入time模块,等待2秒

    time.sleep(2)
    # 这里通过元素XPath表达式来确定该元素显示在结果列表,从而判断Selenium官网这个链接显示在结果列表。
    # 这里采用了相对元素定位方法/../
    # 通过selenium方法is_displayed() 来判断我们的目标元素是否在页面显示。
    driver.find_element_by_xpath("//div/h3/a[text()='官网']/../a/em[text()='Selenium']").is_displayed()
    driver.quit()


    第二种断言写法:


    # coding=utf-8
    import time
    from selenium import webdriver

    driver = webdriver.Chrome()
    driver.maximize_window()
    driver.implicitly_wait(8)

    driver.get("https://www.baidu.com")
    driver.find_element_by_xpath("//*[@id='kw']").send_keys("selenium")
    driver.find_element_by_xpath("//*[@id='su']").click()

    time.sleep(2)
    # 第二个判断方法
    ele_string = driver.find_element_by_xpath("//div/h3/a[text()='官网']/../a").text
    if (ele_string == u"Selenium - Web Browser Automation"):
    print "测试成功,结果和预期结果匹配!"
    driver.quit()
          这里只利用 两个等号(==)来判断两个字符串是否完全相同,有时候我们还需要对得到的字符串进行切割操作,才能进行去匹配,以后再介绍字符串切割处理在自动化测试结果判断中的使用。

    总结:自动化测试最难的在于如何去写断言,如何判断测试结果是否通过。

         建议: 以上代码包括以后文章中脚本举例,你还是最好去一行一行抄写,不要直接复制、黏贴到你记事本中。因为,你在书写脚本过程,肯定会犯一些语法和输入错误,在调试脚本过程,通过观察报错信息,直到你解决问题,可以顺利执行脚本,你会得到和收获很多。

  • 相关阅读:
    【Anagrams】 cpp
    【Count and Say】cpp
    【Roman To Integer】cpp
    【Integer To Roman】cpp
    【Valid Number】cpp
    重构之 实体与引用 逻辑实体 逻辑存在的形式 可引用逻辑实体 不可引用逻辑实体 散弹式修改
    Maven项目聚合 jar包锁定 依赖传递 私服
    Oracle学习2 视图 索引 sql编程 游标 存储过程 存储函数 触发器
    mysql案例~tcpdump的使用
    tidb架构~本地化安装
  • 原文地址:https://www.cnblogs.com/pingan666/p/10183269.html
Copyright © 2011-2022 走看看