1. 程式人生 > >自動化測試中獲取頁面元素

自動化測試中獲取頁面元素

到目前為止也只做了幾個月測試,自動化測試指令碼寫了不超過十個。但是藉助公司原有的框架,感覺還是學到很多東西,有必要整理記錄。
1.普通的html標籤: 通過id, xpath即可得到。
2.偽元素:即緊跟在標籤之後的:before, :after 等元素,有時候某些驗證點在這些偽元素的css屬性當中,通過xpath獲取不到這些偽元素, css selector 也沒有找到合適的方法可以得到。因此偽元素是通過執行JavaScript語句得到的,程式碼如下: 

  String script1 = "return window.getComputedStyle(document.querySelectorAll('.sizing-tool .tab-content .checkbox-group')["    + i + "],':before').getPropertyValue('background-color')";

JavascriptExecutor js = (JavascriptExecutor) driver;

String content = (String) js.executeScript(script1);

  這句程式碼的解析: String script1 = "return window.getComputedStyle(document.querySelectorAll('css selector')[index],':before/:after').getPropertyValue('css屬性名')";因為document.querySelectorAll得到的是一個數組,所以需要index指明你想得到數組裡的第幾個值。



3.有的網頁,一個頁面會有多個Tab,點選對應的tab,會到指定的div。並且這些tab對應的每個div的class和結構都是一樣的,通過xpath是得到一個List<WebElement>,而不是那個被啟用div下我們需要的那個元素。這個時候其實被我們點選的那個tab的class一般都會有 active 顯示,我們可以通過這個來區別其他tab下的內容。如果沒有 active的話,就是開發的鍋了。。。因為我遇到過這個坑,是帶我的小姐姐教的,所以提及給自己一個提醒。其實自動化測試,一些Popup window 的出現和消失都是通過class來控制的,所以當出現某個東西比較難找的時候,點選該元素,注意觀察瀏覽器F12下程式碼的變化就能看的出來了。

4.現在網頁的結構一般都會有個Header,Header中會有多個一級連結,每個一級連結下還會有多個連結,並且這些linkText基本都是一兩個單詞的那種,如果每個都用xpath去取的話就會很煩,所以呢,噔噔噔噔噔,就用一個封裝的方法通過傳入連結的text就可以了。

String selectorFormat="//div[@class='selector-container']//div[@class='title-btn']//span[contains(text(),'%s')]";
public WebElement linkTextOfSelector(String linkName) {
return find(selectorFormat, linkName);
}

%s是萬用字元?我還沒有了解透徹,程式碼大概是這樣,我現在去查一下這個%s...——在Java中,這是一個字串佔位符