极简主义 Selenide之WebDriver二次封装的Web自动化框架

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)

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

  1. $("input").should(exist);

  2. $("input").shouldBe(visible);

  3. $("input").shouldHave(exactText("Some text"));

Selenide 断言 Condition 采用显示等待,等待条件 ( visibleenabledtext("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中,否则-假

最后感谢每一个认真阅读我文章的人,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:

这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值