51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

查看: 2535|回复: 3
打印 上一主题 下一主题

[Appium] Java+Selenium自动化测试创建首个自动化脚本

[复制链接]
  • TA的每日心情
    无聊
    半小时前
  • 签到天数: 936 天

    连续签到: 3 天

    [LV.10]测试总司令

    跳转到指定楼层
    1#
    发表于 2021-8-16 13:06:37 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
    1.简介
      自动化脚本编写比较容易,最大的困难去如何去写测试断言。自动化测试,最重要的还是落在测试上面,而不是自动化,自动化只是手段。断言的写法,就考验出一个测试工程师是否考虑全面,体现出你的用例编写水平。
      2.测试用例
      很多童鞋或者小伙伴们可能会有这样有个误区:自动化测试是不需要设计测试用例的。其实不然它也是需要设计测试用例,然后根据用例进行脚本的编写和断言,只不过是把用例以代码的形式体现出来,而机器恰好可以识别代码,将代码跑起来,其实就是在执行你的用例,只不过是由机器帮你自动执行。好了废话少说开始说说宏哥今天要做的测试是:打开百度,输入selenium搜索,验证打开链接有没有Selenium官网链接。
      测试用例:打开百度首页,搜索Selenium,然后检查搜索列表,有没有Selenium官网链接。
      2.1分析
      我们输入了url,然后打开一个页面,如果判断这个页面是不是我们提前知道的页面呢。
      1. 获取当前url是不是和输入的一致,假如链接没有发生重定向。
      2. 获取当前页面title,是不是我们期待的结果。
      3. 在页面元素body找一个特征元素,这个特征元素能够代表是该网站。
      我想,也大概只有上面三点依据可以判断我们访问的网站对不对。第一点,有时候不靠谱,不知道你们是否听说过盗链,就是输入一个网站URL,显示的内容是别人的网站,而不是你测试的网站。甚至有链接的重定向出现。第二点,还是比较考虑,title这个值是网站前端开发同学写入的,基本上可以代表是你要打开的网站。第三点,有点难找这样的特征元素,而且有时候找到了也不一定是正确的。下面的代码就用页面的title来作为我们判断的依据。
      2.2步骤
      1.启动浏览器
      2.打开百度首页:http://www.baidu.com
      3.判断这个页面是不是我们提前知道的页面
      4.定位搜索输入框,记录下输入框元素的xpath表达式://*[@id='kw']
      5.定位搜索提交按钮(百度一下),获取xpath表达式://*[@id='su']
      6.在搜索输入框输入:Selenium,点百度一下这个按钮
      7.在搜索结果列表去判断是否存在Selenium官网这个链接
      8.退出浏览器,结束测试
      2.3代码设计
      1.根据步骤进行测试脚本的编写。lessons->new->class,命名为:FirstScript。开始编写脚本。如下图所示:

    2.4参考代码
    1. package lessons;
    2.   import java.util.concurrent.TimeUnit;
    3.   import org.openqa.selenium.By;
    4.   import org.openqa.selenium.WebDriver;
    5.   import org.openqa.selenium.WebElement;
    6.   import org.openqa.selenium.chrome.ChromeDriver;
    7.   /**
    8.    * [url=home.php?mod=space&uid=267564]@Author[/url] 北京-宏哥
    9.    *
    10.    * 2021年6月24日
    11.    */
    12.   public class FirstScript {
    13.      
    14.       public static void main(String[] args) {
    15.           
    16.           System.setProperty("webdriver.chrome.driver", ".\\Tools\\chromedriver.exe");  
    17.           
    18.            WebDriver driver = new ChromeDriver();  
    19.               
    20.            driver.manage().window().maximize();  
    21.               
    22.            driver.manage().timeouts().implicitlyWait(8, TimeUnit.SECONDS);     
    23.           
    24.            driver.get("https://www.baidu.com");  //地址栏输入百度地址
    25.            
    26.            //判断title是不是 百度一下,你就知道
    27.            
    28.            try{
    29.                String baidu_title = "百度一下,你就知道";
    30.                assert baidu_title == driver.getTitle();
    31.                System.out.println("Test Pass");
    32.               
    33.            }catch(Exception e){
    34.                e.printStackTrace();
    35.            }
    36.            
    37.            driver.findElement(By.id("kw")).sendKeys("Selenium");//搜索输入框输入Selenium
    38.         
    39.            driver.findElement(By.id("su")).click();//点击百度一下按钮
    40.            
    41.            //设置隐性等待时间  
    42.            driver.manage().timeouts().implicitlyWait(8, TimeUnit.SECONDS);  
    43.            
    44.            //这里通过元素XPath表达式来确定该元素显示在结果列表,从而判断Selenium官网这个链接显示在结果列表。
    45.            
    46.            WebElement ele_string=driver.findElement(By.xpath("//*[@id='1']/h3/a[1]"));
    47.            
    48.            
    49.            String ele_string1 = ele_string.getText();
    50.            
    51.            System.out.println(ele_string1);
    52.            
    53.            try{
    54.            
    55.                if(ele_string1.equals("Selenium automates browsers. That's it!")){
    56.               
    57.                    System.out.println("Testing is successful!");
    58.                  
    59.                }
    60.            }catch(Exception e){
    61.                e.printStackTrace();
    62.            }
    63.                 
    64.            //关闭并退出浏览器  
    65.            driver.quit();  
    66.       }
    67.   }
    复制代码
    Java中有一个方法叫assert,中文意思叫断言,assert后面跟着的是一个表达式,表达式的值是布尔型。上面的例子就是,当判断表达式值是true,就打印Tess Pass。这里可以看到,我把断言部分代码放在try cathc语句中。编写脚本或者编写代码要养成一个好习惯,习惯主动去捕获异常,并处理异常。这里我们自动化脚本,基本上没有需要去处理异常,一般选择直接打印出异常信息就可以。
      到这里,Selenium WebDriver基础篇就结束了,下面的文章,主要是介绍WebDriver的一些常见接口或者方法的实际使用,尽量多介绍一些Selenium方法,为后面的方法封装和框架设计做铺垫。
      2.5运行代码

      运行代码,右键Run AS->java Application,控制台输出,如下图所示:

    3.小结
      equals和==的区别
      宏哥这里简单的说一下,更详细的你可以百度查一下。关于判断两个字符串是否相等的问题。在编程中,通常比较两个字符串是否相同的表达式是“==”,但在java中不能这么写。在java中,用的是equals();
    1. 例:A字符串和B和字符串比较:
    2.   if(A.equals(B)){
    3.   }
    4.   返回true 或false.
    复制代码
    String 的equals 方法用于比较两个字符串是否相等。由于字符串是对象类型,所以不能用简单的“==”判断。而使用equals比较两个对象的内容是否相等。
      注意:equals()比较的是对象的内容(区分字母的大小写格式),但是如果使用“==”比较两个对象时,比较的是两个对象的内存地址,所以不相等。即使它们内容相等,但是不同对象的内存地址也是不相同的。
      好了,首页java+selenium的自动化测试脚本就分享到这里,感谢你耐心地阅读!


    本帖子中包含更多资源

    您需要 登录 才可以下载或查看,没有帐号?(注-册)加入51Testing

    x
    分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
    收藏收藏
    回复

    使用道具 举报

    本版积分规则

    关闭

    站长推荐上一条 /1 下一条

    小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

    GMT+8, 2024-4-24 09:50 , Processed in 0.062747 second(s), 24 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

    快速回复 返回顶部 返回列表