日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

selenide_使用Selenide进行有效的UI测试

發布時間:2023/12/3 编程问答 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 selenide_使用Selenide进行有效的UI测试 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

selenide

等待奇跡

圣誕節是奇跡的時刻。 在新的一年的前夕,我們都會制定下一個計劃。 我們希望所有問題都將在最后一年消失,在來年出現奇跡。

每個Java開發人員都夢想著奇跡,使他成為世界上最有效的Java開發人員。

我想向你展示這樣的奇跡。

這就是所謂的自動化測試 !

tests,測試?

是。 借助micro / pico / nano服務,您不會成為真正的主人。 多虧紀律,您才能成為真正的主人。 紀律聲稱,開發人員僅在編寫和運行代碼和測試時才報告作業完成 。

但是,測試不是很無聊嗎?

哦,不,相信我! 對于最聰明的人來說,編寫快速穩定的自動化測試是一個巨大的挑戰。 這可能非常有趣。 您只需要使用正確的工具。

編寫UI測試的正確工具是:

Selenium化物

Selenide是一個開放源代碼庫,用于編寫簡潔而穩定的UI測試。

Selenide是軟件開發人員的理想選擇,因為它的學習曲線非常低。 因此,您不必費心瀏覽器詳細信息,所有這些典型的ajax和時間問題,而這些時間和問題都占用了QA自動化工程師的大部分時間。

讓我們看一個最簡單的Selenide測試:

public class GoogleTest {@Testpublic void user_can_search_everything_in_google() {open("http://google.com/ncr");$(By.name("q")).val("selenide").pressEnter();$$("#ires .g").shouldHave(size(10));$("#ires .g").shouldBe(visible).shouldHave(text("Selenide: concise UI tests in Java"),text("selenide.org"));} }

讓我們仔細看看這里發生的情況。

  • 您只需open(url)一個命令即可open(url) 瀏覽器 open(url)
  • 可以在命令$的頁面上找到一個元素 。
    您可以按名稱,ID,CSS選擇器,屬性,xpath甚至按文本查找元素。
  • 您可以操縱該元素 :使用val()輸入一些文本,然后使用(surprise-surprise!) pressEnter()按Enter。
  • 檢查結果 :用$$找到所有找到的結果(它返回所有匹配元素的集合)。 您檢查集合的大小和內容。

這個測試不容易閱讀嗎? 這個測試不容易編寫嗎?

我相信是。

深入細節

Ajax /時序問題

如今,Web應用程序是動態的。 每個應用程序都可以隨時動態呈現/更改。 這給自動化測試帶來了很多問題。 今天測試為綠色的測試隨時可能突然變成紅色,這是因為瀏覽器執行某些JavaScript的時間比平常更長。

這真是ajjaxx的痛苦 。

令人難以置信的是,Selenide以非常簡單的方式解決了大多數這些問題。

簡而言之, 如果需要 ,每種Selenide方法都會等待一點。 人們稱其為“智能等待”。

當你寫:

$("#menu").shouldHave(text("Hello"));

Selenide檢查元素是否存在并包含文本“ Hello”。

如果還沒有,Selenide假定該元素可能很快就會動態更新,并稍等片刻,直到它發生。 默認超時為4秒,通常對于大多數Web應用程序來說足夠了。 當然,它是可配置的。

豐富的匹配器

您可以使用Selenide檢查幾乎所有內容。 使用上面提到的“智能等待”機制。

例如,您可以檢查元素是否存在。 如果還沒有,Selenide將等待最多 4秒鐘。

$(".loading_progress").shouldBe(visible);

您甚至可以檢查該元素存在。 如果仍然存在,Selenide將等待4秒鐘,直到消失。

$(By.name("gender")).should(disappear);

而且,您可以使用流利的API和鏈方法來簡化測試:

$("#menu").shouldHave(text("Hello"), text("John!")).shouldBe(enabled, selected);

館藏

Selenide允許您使用集合,因此只需一行代碼即可檢查許多元素。

例如,您可以檢查頁面上是否確實有N個元素:

$$(".error").shouldHave(size(3));

您可以找到集合的子集:

$$("#employees tbody tr").filter(visible).shouldHave(size(4));

您可以檢查元素的文本。 在大多數情況下,檢查整個表或表行就足夠了:

$$("#employees tbody tr").shouldHave(texts("John Belushi","Bruce Willis","John Malkovich") );

上傳/下載文件

使用Selenide上傳文件非常簡單:

$("#cv").uploadFile(new File("cv.doc"));

您甚至可以一次上傳多個文件:

$("#cv").uploadFile(new File("cv1.doc"),new File("cv2.doc"),new File("cv3.doc") );

下載文件非常簡單:

File pdf = $(".btn#cv").download();

測試“高度動態”的Web應用程序

一些Web框架(例如GWT)生成HTML絕對不可讀。 元素沒有恒定的ID或名稱。

這是xpathh中的真正痛苦 。

Selenide建議通過按文本搜索元素來解決此問題。

import static com.codeborne.selenide.Selectors.*;$(byText("Hello, Devoxx!")) // find by the whole text.shouldBe(visible);$(withText("oxx")) // find by substring.shouldHave(text("Hello, Devoxx!"));

通過文本搜索根本不是一個壞主意。 實際上,我喜歡它,因為它模擬了真實用戶的行為。 實際用戶無法通過ID或XPATH找到按鈕,而是通過文本(或者顏色)找到按鈕。

另一套有用的Selenide方法使您可以在父母和孩子之間導航。

$("td").parent() $("td").closest("tr") $(".btn").closest(".modal") $("div").find(By.name("q"))

例如,您可以按文本找到表格單元格,然后按其最接近的tr后裔找到表格單元格,并在此表格行內找到“保存”按鈕:

$("table#employees").find(byText("Joshua")).closest("tr.employee").find(byValue("Save")).click();

…和許多其他功能

Selenide具有更多功能,例如:

$("div").scrollTo(); $("div").innerText(); $("div").innerHtml(); $("div").exists(); $("select").isImage(); $("select").getSelectedText(); $("select").getSelectedValue(); $("div").doubleClick(); $("div").contextClick(); $("div").hover(); $("div").dragAndDrop() zoom(2.5); ...

但好消息是您不需要記住所有這些東西。 只需放入$,放入點,然后從IDE建議的可用選項中進行選擇。

使用IDE的力量! 專注于業務邏輯。

讓世界更美好

我相信,當所有開發人員都開始為其代碼編寫自動化測試時,World會變得更好。 當開發人員在17:00起床去看孩子時,不用擔心他們在最后的改動后會破壞某些東西。

讓我們通過編寫自動化測試來改善世界!

提供工作軟件。

翻譯自: https://www.javacodegeeks.com/2015/12/effective-ui-tests-selenide.html

selenide

總結

以上是生活随笔為你收集整理的selenide_使用Selenide进行有效的UI测试的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。