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.com!
注册 关于