Selenide太难?这样做简洁又高级,学会了工资翻一倍

在这里插入图片描述

01.什么是 Selenide?

Selenide是由Selenium WebDriver二次封装的Web自动化框架,具有以下优点:

  1. 简洁流畅的API
  2. Ajax支持
  3. 强大的选择器
  4. 简单的配置
  5. 您无需考虑如何关闭浏览器、处理超时和 StaleElement 异常或搜索相关日志行、调试测试。

02.快速上手

2.1、maven 坐标



    com.codeborne
    selenide
    5.23.1



    org.testng
    testng
    7.0.0

2.2、代码

静态导入

import static com.codeborne.selenide.Selenide.*;
import static com.codeborne.selenide.Condition.*;

测试代码

public class Demo {

   @Test
   public void test() throws InterruptedException {
      open("https://www.baidu.com");
      $("#kw").setValue("柠檬班");
      $("#su").click();
      $$(".c-abstract").get(0).shouldHave(text("柠檬班"));
   }
}

何如?是不是非常简单,都不需要下载浏览器驱动,也不需要在代码中设置浏览器驱动,使用 selenide 直接上代码干就是。

3 API 介绍

3.1 Selenide 核心类 com.codeborne.selenide.Selenide API 介绍

● open(String URL) 打开浏览器

● $(String cssSelector) 返回 CSS 选择器在页面上找到的第一个元素 SelenideElement 类对象。

● $(By) – 通过 By 类的定位器返回第一个 SelenideElement。

● $$(String cssSelector) 返回 ElementsCollection 类型的对象,该对象表示 CSS 选择器找到的所有元素的集合。

● $$(By) – 按 By 类型的定位器返回“元素集合”。

通常,用 $ 符号获取 SelenideElement 对象时,可以对其执行一些操作:

//单个点击操作
$(byText("Sign in")).click();
//甚至同时执行多个操作:设置值+回车
$(byName("password")).setValue("qwerty").pressEnter();
//或者你可以检查一些条件:
$(".welcome-message").shouldHave(text("Welcome, user!")).
//当所需元素是相同类型的元素时,“Double Dollar $$命令会很有用。
//例如这个例子:
$(byXpath("//*[@id='search-results']//a[contains(text(),'selenide.org')]")).click();
//您可以使用更具可读性和详细性的替代方案:
$$("#search-results a").findBy(text("selenide.org")).click();
//$和$$命令获取的大多数元素操作都有内置的隐式等待。

3.2 Selenide 核心类 com.codeborne.selenide.SelenideElement API 介绍

SelenideElement 描述的页面上找到的元素,通过 $ 命令来获取这个类的对象。类中定义了以下有用的方法。

3.2.1、内部元素搜索方法

find(String cssSelector) / $(String cssSelector)
find(By) / $(By)
findAll(String cssSelector) / $$(String cssSelector)
findAll(By) / $$(By)
//这里$和$$只是相应地更简洁的find和findAll方法的“别名” 。

因此,您可以逐步指定搜索路径,构建“定位器链”:

$("#header").find("#menu").findAll(".item")

3.2.2、检查元素状态的方法 - 断言

should(Condition)/ shouldBe(Condition)/shouldHave(Condition)

shouldNot(Condition)/ shouldNotBe(Condition)/shouldNotHave(Condition)

我们建议选择方便的别名,这样代码行就可以像普通的英语短语一样轻松阅读,例如:

$("input").should(exist);  
$("input").shouldBe(visible);
$("input").shouldHave(exactText("Some text"));

Selenide 断言 Condition 采用显示等待,等待条件 ( visible, enabled, text(“some text”)) 直到达到超时(Configuration.timeout 默认设置为 4000 毫秒)。

如果需要单独实现显示等待,可以使用 should-methods 以在相应操作之前等待元素所需的状态,例如:

$("#submit").shouldBe(enabled).click();

还可以明确设置超时:

$("input").shouldBe(visible, Duration.ofSeconds(30));

3.2.3、对元素操作的方法:

click()
doubleClick()
contextClick()
hover()
setValue(String) / val(String)
pressEnter()
pressEscape()
pressTab()
selectRadio(String value)
selectOption(String)
append(String)
dragAndDropTo(String)

大多数的操作返回 SelenideElement 允许生成简洁方法链对象:

3.2.4、获取元素状态和属性值的方法:

getValue() / val()
data()
attr(String)
text() // 返回“页面上的可见文本”
innerText() // 返回“DOM 中元素的文本”
getSelectedOption()
getSelectedText()
getSelectedValue()
isDisplayed()//返回false,如果元素被隐藏(不可见)或者元素在DOM中不存在;否则 - 真
exists() //返回真,如果元素存在于DOM中,否则-假

Selenide太难?这样做简洁又高级,学会了工资翻一倍_第1张图片

最后: 可以在公众号:伤心的辣条 ! 免费领取一份216页软件测试工程师面试宝典文档资料。以及相对应的视频学习教程免费分享!,其中包括了有基础知识、Linux必备、Shell、互联网程序原理、Mysql数据库、抓包工具专题、接口测试工具、测试进阶-Python编程、Web自动化测试、APP自动化测试、接口自动化测试、测试高级持续集成、测试架构开发测试框架、性能测试、安全测试等。

如果我的博客对你有帮助、如果你喜欢我的博客内容,请 “点赞” “评论” “收藏” 一键三连哦!喜欢软件测试的小伙伴们,可以加入我们的测试技术交流扣扣群:914172719(里面有各种软件测试资源和技术讨论)


好文推荐

转行面试,跳槽面试,软件测试人员都必须知道的这几种面试技巧!

面试经:一线城市搬砖!又面软件测试岗,5000就知足了…

面试官:工作三年,还来面初级测试?恐怕你的软件测试工程师的头衔要加双引号…

什么样的人适合从事软件测试工作?

那个准点下班的人,比我先升职了…

测试岗反复跳槽,跳着跳着就跳没了…

你可能感兴趣的