Selenium 特殊元素的定位與操作


Web頁面有很多特殊的元素  無法使用基本的元素定位方式定位,下面介紹幾個特殊的元素定位

1、alert

alert框只有一個確認按鈕

BrowserUtil是一個封裝好的瀏覽器啟動類

BrowserUtil.driver.findElement(By.id("abtn")).click();

Thread.sleep(3000);

Alert alert = BrowserUtil.driver.switchTo().alert();

alert.accept(); //點擊確認按鈕

alert.dismiss();//彈框消失

2、confirm

 confirm框有確定和取消按鈕

Alert alert = BrowserUtil.driver.switchTo().alert();

alert.accept(); //點擊確定按鈕

alert.dismiss();//點擊取消按鈕

confirm框和alert框使用方法一樣

3、div類型的彈框

 

4、Iframe切換

如何確認定位的是元素是否存在iframe,例如在chrome瀏覽器檢查元素時,以下2個標識可以確認是iframe

 iframe定位思路:

1)先定位到第一個元素

2)使用格式switchTo().frame()方法轉到frame再定位

BrowserUtil.driver.switchTo().frame("bframe");

3)多層嵌套繼續使用第2)條的方法

4)回到原來的第一個主頁面中

BrowserUtil.driver.switchTo().defaultContent();

5、radio/checkbox 單選/復選框 

使用普通定位元素的方法就可以了,用click()方法點擊,用isSelected()方法判斷是否選中

復選框多選,定位多個元素依次點擊就可以了

6、select 選擇框

下拉選擇框可以單選也可以多選,具體使用如下:

7、時間日期控件

1)時間控件支持輸入框輸入日期,按正常的元素定位sendKeys輸入日期即可

2)時間控件輸入不支持輸入日期時,查看該元素可發現,該屬性有readonly,只可讀不可寫,例如12306的時間控件

此時需要在Selenium里面執行javaScript代碼,把該屬性去掉后,再按照正常的元素定位方式,sendKeys輸入日期,具體代碼如下:
JavascriptExecutor javascriptExecutor = (JavascriptExecutor)BrowserUtil.driver;

javascriptExecutor.executeScript("document.getElementById('train_date').removeAttribute('readonly')");

在檢查元素console控制台輸入document.getElementById('train_date'),可以找到該輸入框,removeAttribute('readonly')表示要移動該屬性的readonly值,只時該輸入框就可以輸入日期了

注意: 因只讀控件有默認的時間,需要先清除再輸入日期,否則時間會重疊顯示

 

 

 

 

8、JavaScript滾動元素到頁面某一區域

代碼如下:

JavascriptExecutor javascriptExecutor = (JavascriptExecutor)BrowserUtil.driver;
javascriptExecutor.executeScript("document.getElementById('index_ads').scrollIntoView()");

scrollIntoView()-->滾動到可視區域的最上方
scrollIntoView(0)-->滾動到可視區域的下方

 

9、通過參數的傳遞滾動

1)單個元素傳遞

 

 

 

2)多個元素傳遞

10、懶加載  頁面有一部分元素默認沒有加載出來

 

 

 

操作如下圖

 

 

 

 

 

 

11、拖 拽

Actions鼠標事件還有很多其它的方法,可以依次試下

 

 

 

 12、文件上傳

 先定位到文件上傳按鈕 元素 ,並輸入文件路徑

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM