51Testing软件测试论坛

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

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 1454|回复: 0
打印 上一主题 下一主题

Selenide UI 自动化测试

[复制链接]
  • TA的每日心情
    奋斗
    2021-8-6 16:14
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]测试小兵

    跳转到指定楼层
    1#
    发表于 2018-4-11 14:08:09 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
      我没有拼写错误,确实不是 Selenium ,但是,只要是 Web UI 自动化测试框架,基本上都是基于Selenium
    的。Selenide 也不例外。那为啥不直接用Selenium呢? 因为原生的 Selenium 不好用啊!

       举个例子,用原生成Selenium去写 显式等待。

    复制代码
       ……

       //显式等待, 针对某个元素等待
    1.     WebDriverWait wait = new WebDriverWait(driver,10,1);

    2.     wait.until(new ExpectedCondition<WebElement>(){
    3.       @Override
    4.       public WebElement apply(WebDriver text) {
    5.             return text.findElement(By.id("kw"));
    6.           }
    7.     }).sendKeys("selenium");
    复制代码

    复制代码
      如果每一个元素都设置显示等待(为了保证脚本的稳定性),你不会疯掉? 所以, 用 Selenium 做UI 自
    动化测试,不去封装 Selenium, 不去考虑设计模式。你的项目很难做得好!



    什么是 Selenide ?

         Concise UI Tests with Java!  所以,其它语言的同学靠边。

         Selenide = UI Testing Framework powered by Selenium WebDriver



    如何学习?
        Github 项目地址:https://github.com/codeborne/selenide

        官方网站:http://selenide.org/index.html



    如何安装?
         这里只介绍 Maven 安装:

    复制代码

    1.      <dependency>
    2.             <groupId>org.testng</groupId>
    3.             <artifactId>testng</artifactId>
    4.             <version>6.11</version>
    5.             <scope>test</scope>
    6.         </dependency>

    7.         <dependency>
    8.             <groupId>com.codeborne</groupId>
    9.             <artifactId>selenide</artifactId>
    10.             <version>4.8</version>
    11.             <scope>test</scope>
    12.         </dependency>

    13.         <dependency>
    14.             <groupId>org.slf4j</groupId>
    15.             <artifactId>slf4j-log4j12</artifactId>
    16.             <version>1.7.5</version>
    17.             <scope>provided</scope>
    18.         </dependency>

    19.         <dependency>
    20.             <groupId>log4j</groupId>
    21.             <artifactId>log4j</artifactId>
    22.             <version>1.2.14</version>
    23.             <scope>provided</scope>
    24.         </dependency>
    复制代码

    复制代码
        我的测试用例是基于 testNG 单元测试框架运行的,所以,把 TestNG 的配置加进来了。

        Selenide 在安装运行的过程中报错: Failed to load class "org.slf4j.impl.StaticLoggerBinder"    所以,指
    定了一下slf4j 和 log4j 的版本。



    如何使用?
        Selenium 老司机直接看代码,不管怎么的封装, 一眼就能看出来它的“特色”。 官方 demo。

    复制代码
    1. @Test
    2. public void userCanLoginByUsername() {
    3.   open("/login");
    4.   $(By.name("user.name")).setValue("johny");
    5.   $("#submit").click();
    6.   $(".loading_progress").should(disappear); // Waits until element disappears
    7.   $("#username").shouldHave(text("Hello, Johny!")); // Waits until element gets text
    8. }
    复制代码

    复制代码
          URL 地址在哪儿? 浏览器怎改? 估计你跑不起来! 反正,我没跑起来。 打开 Friefox 浏览器就不动了。

          好在!作者很负责,在官方上放了一段自己录制的10分钟教程(其实,我听不懂英文,但看他的操作
    就明白了。哈哈!)

    复制代码
    1. import com.codeborne.selenide.Configuration;
    2. import org.testng.annotations.Test;

    3. import static com.codeborne.selenide.CollectionCondition.size;
    4. import static com.codeborne.selenide.Selenide.*;
    5. import static com.codeborne.selenide.Condition.*;


    6. public class SelenideTest {

    7.     @Test
    8.     public void TestBaidu() throws InterruptedException {
    9.         Configuration.browser = "Chrome";
    10.         Configuration.baseUrl="https://www.baidu.com";
    11.         open("/");
    12.         $("#kw").setValue("selenide");
    13.         $("#su").click();
    14.         Thread.sleep(3000);
    15.         // 断言
    16.         $("h3 > a").shouldHave(size(9));
    17.         $("h3 > a").setValue(String.valueOf(text("selenide_百度翻译")));
    18.     }

    19. }
    复制代码

    复制代码
         这才是可以运行的第一个demo。

         通过这第一个demo,感官性的谈谈它的优点:

         1、 API更简洁

         2、默认使用 CSS 定位

         3、自己封装了断言

         4、错误后自动截图 (不信你运行上面的代码试试)

         5、自动关闭浏览器。

         缺点:

         不知道为什么 我的 Chrome 浏览器启动的特别慢。



        希望我进一步介绍 Selenide UI自动化框架的使用,欢迎留言!

        --------------

        我自己也有封装 selenium  的框架:

        java selenium :https://github.com/defnngj/knife

       python selenium : https://github.com/defnngj/pyse

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

    使用道具 举报

    本版积分规则

    关闭

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

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

    GMT+8, 2024-11-17 20:27 , Processed in 0.064793 second(s), 23 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

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