寫在前面
明天就是周五了,這周有那麼一兩天心情特别不好,真的是做什麼都沒興緻,是以導緻整個人都很喪,什麼都不想做。
本打算周一就更新這篇文章的,但由于公司一直加班,每天到家很晚,都是擠時間去學,了解後再輸出到部落格寫出來,是以導緻進度就滞後了,真的不是我偷懶,還請一直關注我的小夥伴能夠了解。
常見點選事件操作
這部分主要示範的常見點選操作,例如:文本輸入、複選框、單選按鈕、選擇選項、滑鼠點選事件等等。
1、輸入操作
「文法:」 Locator.fill(value)
「使用場景:」 文本框、日期/時間、月曆控件等輸入框
示例代碼如下:
/**
* 輸入操作:
* 文法:Locator.fill(value)
* 使用場景:文本框、日期/時間、月曆控件等輸入框
*/
@Test
public void testInput() {
page.locator("#user").fill("公衆号:軟體測試君");
String value = page.locator("#user").getAttribute("value");
//輸出 ==> 公衆号:軟體測試君
System.out.println(value);
}
2、點選操作
「文法:」 Locator.click()
「适用場景:」 單選框、複選框、按鈕控件、常見可點選控件等等!
示例代碼如下:
/**
* 點選操作
* 文法:Locator.click()
* 适用場景:單選框、複選框、按鈕控件、常見可點選控件等等!
*/
@Test
public void testClick() {
//點選超連結
page.locator(".baidu").click();
page.goBack();
//點選單選框(RadioBox)
page.locator(".Volvo").click();
//點選複選框(checkbox)
page.locator("#checkbox [type='checkbox']:nth-child(7)").click();
}
3、單選框及複選框操作
「文法:」 Locator.setChecked(checked)
「适用場景:」 單選框、複選框
示例代碼如下:
/**
* 單選框及複選框操作
* 文法:Locator.setChecked(checked)
* 适用場景:單選框、複選框
*/
@Test
public void testChecked() {
//單選款 (選中,已選中狀态下無效)
page.locator(".Volvo").setChecked(true);
page.locator(".Volvo").check();
System.out.println(page.locator(".Volvo").isChecked());
//複選框(選中,已選中狀态下無效)
page.locator("#checkbox [type='checkbox']:nth-child(7)").check();
page.locator("#checkbox [type='checkbox']:nth-child(7)").setChecked(true);
System.out.println(page.locator("#checkbox [type='checkbox']:nth-child(7)").isChecked());
}
4、下拉控件操作
「文法:」 Locator.selectOption(values[, options])
「适用場景:」 下拉框操作
示例代碼如下:
/**
* 下拉控件操作
* 文法:Locator.selectOption(values[, options])
* 适用場景:下拉框操作
*/
@Test
public void testSelectOption() {
//通過value值選擇
page.locator("[name='select']").selectOption("opel");
//通過可見文本選擇
page.locator("[name='select']").selectOption(new SelectOption().setLabel("Audi"));
// 多選無效,隻能選中第一個(saab)
//page.locator("[name='select']").selectOption(new String[] {"saab", "opel"});
}
5、滑鼠事件
「文法:」 詳見案例
「适用場景:」常見滑鼠點選事件
「案例如圖:」
示例代碼如下:
/**
* 滑鼠事件
* 文法:詳見案例
* 适用場景:
*/
@Test
public void testMouse() {
page.navigate("http://localhost:8080/mouse.html");
//正常單擊
page.locator("#mouse2").click();
pause(3);
//輕按兩下
page.locator("#mouse3").dblclick();
pause(3);
//右鍵單擊
page.locator("#mouse5").click(new Locator.ClickOptions().setButton(MouseButton.RIGHT));
pause(3);
//按住Shift鍵并單擊
page.locator("#mouse2").click(new Locator.ClickOptions().setModifiers(Arrays.asList(KeyboardModifier.SHIFT)));
pause(3);
//懸停在元素上
page.locator("#mouse1").hover();
pause(3);
//單擊左上角
page.locator("#mouse1").click(new Locator.ClickOptions().setPosition(0, 0));
pause(3);
//強制點選
page.locator("#mouse2").click(new Locator.ClickOptions().setForce(true));
pause(3);
//排程點選事件來觸發點選
page.locator("#mouse2").dispatchEvent("click");
}
注意: 不知道是什麼原因, 在執行滑鼠點選案例時,程式從上到下操作後會發現彈窗會自己點選關掉,神奇的很!
寫到最後
對比學習看的話,Selenium操作點選後的彈窗需要alert來完成确認,而Playwright卻可以自動點選,可以說比Selenium智能嗎?有興趣的小夥伴可以自己嘗試。