天天看點

章節十一、2-如何點選連結按鈕和操作文本框

以下操作基于該網站進行示範: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”@我,群裡有一群軟測小夥伴。