1. 程式人生 > >Java Selenium - 元素操作 (二)

Java Selenium - 元素操作 (二)

真的 示例 length java 成功 new frame 邊界 lec

一篇概括了常用的元素定位方法,但是找到元素還是不夠的,模擬鼠標的操作,完成各個功能點的自動操作才是關鍵。

下面是常見的頁面元素操作會涉及到的方法,不是很全,比較復雜的後面單獨拿出來做案例。

技術分享

一, 輸入框 ,按鈕

登錄到京東,找到主頁的搜索框,這就是經典的輸入框,然後點擊搜索按鈕,完成搜索的動作。

技術分享

    public static void SeachText(WebDriver dr, String URL){
        dr.get(URL);
        dr.findElement(By.id("key")).clear();//clear text
        dr.findElement(By.id("key")).sendKeys("test");//
input your test string dr.findElement(By.className("button")).click();//click search button }

真的能搜出京東的測試數據。。。在真實工作場景中,這個輸入框的輸入內容要做一條完整的case,需要考慮到很多情況,邊界值,特殊字符,長度限制等等。

技術分享

二,下拉選擇框 ,iframe , 鼠標懸停

同樣是京東首頁,右邊有個手機充值的下拉選擇框,我們用這個做案例,看看Select的用法。

對下拉框進行操作時首先要定位到這個下拉框,new 一個Selcet對象(劃重點),然後對它進行操作。

技術分享

下面可以看到下拉元素的所有操作方法,可以選擇指定元素(按索引,顯示文本,value),可以獲取下拉菜單所有選擇項等等。從上圖中可以看到,value是10,對應的顯示文本是”10元“,現在頁面默認顯示“100元”,所有100對應的option是“selected”已選擇狀態。

技術分享

本以為很簡單,按照上面的id定位到下拉菜單就可以操作。。。等寫代碼才發現不是這樣簡單的,木事,工作中也一樣,有坑填坑。首先,要鼠標指向“話費”懸停,然後指向“話費充值”懸停(這個地方默認是話費充值,不寫也沒關系,但工作中保險起見,還是寫上),最後去找Select.

這個案例覆蓋了多個經典元素操作:1.鼠標懸停 2.iframe 3.Select 對象 , 賺到了,有木有:)

技術分享

代碼示例:

    public static void Mobile_Selector(WebDriver dr, String URL){
        dr.get(URL);
        Actions actions =new Actions(dr);//懸停操作action
        actions.moveToElement(dr.findElement(By.className("service_txt"))).perform();//懸停操作方法
        
        dr.switchTo().frame(0);//切入到本頁面第一個iframe
        actions.moveToElement(dr.findElement(By.linkText("話費充值"))).perform();
        
            
        dr.switchTo().frame(0);//切入子iframe,與上面的iframe存在包含關系,所以index是0.
        dr.findElement(By.id("phoneNumber")).sendKeys("15012345678");//輸入測試手機號,這個真實測試的時候,需要參數化
        
        Select select = new Select(dr.findElement(By.id("select-price-money")));//選擇充費錢數

        int length = select.getOptions().size();
        System.out.println(length);

        select.selectByIndex(length-1);//下拉菜單索引從0開始
        
        select.selectByIndex(3);
        //select.selectByValue("10");
        //select.selectByVisibleText("20元");
        
        dr.findElement(By.className("btn-submit")).click();//點擊快速充值    
    }

運行成功後:

技術分享

Java Selenium - 元素操作 (二)