以下操作基于該網站進行示範:https://piao.qunar.com/
一、進入“去哪兒”網站,點選“登入”---》密碼登入---》輸入使用者和密碼,代碼示範:
package basicweb;
import java.awt.TextField;
import java.util.concurrent.TimeUnit;
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.openqa.selenium.By;
import org.openqa.selenium.Keys;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.interactions.Actions;
class BasicOperation {
// 聲明了一個webdriver類型的變量名,對象名為“driver”
WebDriver driver;
// 定義一個String類型的字元串,用于存放我們需要打開的url
String baseUrl;
// 将在執行test方法前需要進行的操作放在@BeforeEach注釋的方法中
@BeforeEach
void setUp() throws Exception {
// 将這個變量名對象的引用指向ChromeDriver,表示我們需要用谷歌浏覽器來進行自動化操作
driver = new ChromeDriver();
// 指定我們需要打開的網站
baseUrl = "https://piao.qunar.com/";
// 隐式等待
// .implicitlyWait(時長, 時間機關);下面設定時間為“10秒”
// TimeUnit.SECONDS表示秒
driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
// 浏覽器視窗最大化
driver.manage().window().maximize();
}
@Test
void test() {
// 打開網址
driver.get(baseUrl);
// 定位登入連結
driver.findElement(By.id("__headerInfo_login__")).click();
System.out.println("點選登入連結");
// 點選“密碼登入”
driver.findElement(By.linkText("密碼登入")).click();
// 判斷使用者名輸入框是否為空
TextField tf = new TextField();
if(tf.getText() != null && !"".equals(tf.getText().trim())) {
// 如果不為空就清除文本框中的内容
driver.findElement(By.name("username")).clear();}
// 否則就輸入“賬戶”
else {
driver.findElement(By.name("username")).sendKeys("1312222222");
}
// 判斷密碼輸入框是否為空
if(tf.getText() != null && !"".equals(tf.getText().trim())) {
// 如果不為空就清除文本框中的内容
driver.findElement(By.cssSelector(".psw")).clear();
}
// 否則就輸入“密碼”
else {
//因為去哪兒網的密碼框有安全限制,是以不能直接使用.sendkeys方法輸入密碼
// new一個獲得Form表單資料,并處理邏輯的類
Actions action = new Actions(driver);
// 聲明一個WebElement類型的變量,用于存儲密碼框元素
WebElement element = driver.findElement(By.cssSelector(".psw"));
// 輸入“密碼”
action.sendKeys(element,"111").perform();
}
}
@AfterEach
void tearDown() throws Exception {
// 強制等待5秒,一秒等于1000毫秒
Thread.sleep(5000);
// 在所有的test執行完成後退出浏覽器
driver.quit();
}
}
二、因為去哪兒網的密碼框有安全限制,是以不能直接使用.sendkeys方法輸入密碼
Actions action = new Actions(driver);
// 聲明一個WebElement類型的變量,用于存儲密碼框元素
WebElement element = driver.findElement(By.cssSelector(".psw"));
// 輸入“密碼”
action.sendKeys(element,"111").perform();
有不懂的同學加群“555191854”@我,群裡有一群軟測小夥伴。