极简主义 Selenide

发布于 更新于
本文目录
  1. 1、什么是Selenide?
  2. 2、快速上手
  3. 2.1、maven坐标
  4. 2.2、代码
  5. 2.2.1、静态导入
  6. 2.2.2、测试代码
  7. 3、API介绍
  8. 3.1、 Selenide核心类com.codeborne.selenide.Selenide API介绍
  9. 3.2、 Selenide核心类com.codeborne.selenide.SelenideElement API介绍
  10. 3.2.1、内部元素搜索方法
  11. 3.2.2、检查元素状态的方法 - 断言
  12. 3.2.3、对元素操作的方法:
  13. 3.2.4、获取元素状态和属性值的方法:

技术文章自动化测试

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

1、什么是Selenide?

Selenide是由Selenium WebDriver二次封装的Web自动化框架,具有以下优点:
1. 简洁流畅的API
2. Ajax支持
3. 强大的选择器
4. 简单的配置
5. 您无需考虑如何关闭浏览器、处理超时和 StaleElement 异常或搜索相关日志行、调试测试。

2、快速上手

2.1、maven坐标

<!-- selenide  -->
<dependency>
    <groupId>com.codeborne</groupId>
    <artifactId>selenide</artifactId>
    <version>5.23.1</version>
</dependency>
<!-- testng  -->
<dependency>
    <groupId>org.testng</groupId>
    <artifactId>testng</artifactId>
    <version>7.0.0</version>
</dependency>

2.2、代码

2.2.1、静态导入

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

2.2.2、测试代码

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允许生成简洁方法链对象:

$("#edit").setValue("text").pressEnter();

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

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

来源:testingpai

继续阅读