Selenium簡介

u014249394發表於2017-03-15
  • 介紹

Selenium是用於測試 Web 應用程式使用者介面 (UI) 的常用框架。它是一款用於執行端到端功能測試的超強工具。您可以使用多個程式語言編寫測試,並且 Selenium 能夠在一個或多個瀏覽器中執行這些測試。 Selenium可以使用Java或者Python語言來開發。如果你不知道該選用哪個語言,或者不知道該學些什麼東西的話,這裡有Selenium學習建議。 官網:http://www.seleniumhq.org/download/
  • 學習視訊

https://yunpan.cn/cYNHR6gbmqFYZ  訪問密碼 6c18
  • 瀏覽器驅動

Selenium這個WebUI測試框架,是基於webdriver來驅動瀏覽器的。那麼,就需要到官網下載瀏覽器對應的驅動檔案。需要注意的是,瀏覽器和驅動的版本要對應。 不同瀏覽器的各個版本需要使用的webdriver驅動的版本也是不一樣的,谷歌瀏覽器(Chrome)的對應關係請參考《ChromeDriver版本差異》,IE瀏覽器的對應關係請參考《IEDriver》。採用Gecko核心的火狐(Firefox)瀏覽器採用的是GeckoDriver驅動,更多內容請參考《GeckoDriver》。
  • Java的Helloworld

新增maven依賴: [codesyntax lang="xml"]
<dependency> 
   <groupId>org.seleniumhq.selenium</groupId> 
   <artifactId>selenium-java</artifactId> 
   <version>2.9.0</version> 
</dependency>
[/codesyntax] 下面是Java寫的一個例子: [codesyntax lang="java"]
package org.suren.seleinum.test;

import java.io.File;
import java.util.List;
import java.util.Random;

import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.ie.InternetExplorerDriver;
import org.openqa.selenium.remote.DesiredCapabilities;

/**
 * @author surenpi.com
 * 
 * @2015年6月3日
 */
public class InternetExplorerTest {

	public static void main(String[] args) {
		DesiredCapabilities capability=DesiredCapabilities.internetExplorer(); 
		capability.setCapability(InternetExplorerDriver.INTRODUCE_FLAKINESS_BY_IGNORING_SECURITY_DOMAINS, true); 
		
		File file = new File("d:/IEDriverServer.exe");  
		System.setProperty("webdriver.ie.driver", file.getAbsolutePath());
		
		WebDriver webDriver = new InternetExplorerDriver(capability);
		webDriver.get("http://surenpi.com");
		
		List<WebElement> eles = webDriver.findElements(By.tagName("a"));
		
		try
		{
			for(WebElement ele : eles)
			{
				String rel = ele.getAttribute("rel");
				if("bookmark".equals(rel))
				{
					ele.click();
				}
			}
		}
		catch(Exception e)
		{
		}
		
		gotoPrevPage(webDriver);
		
//		webDriver.quit();
	}
	
	public static void gotoPrevPage(WebDriver webDriver)
	{
		WebElement ele = webDriver.findElement(By.xpath("/html/body/div[3]/div/div[1]/div/nav"));
		ele = ele.findElement(By.tagName("a"));
		System.out.println(ele.getText());
		
		String href = ele.getAttribute("href");
		
		webDriver.get(href);
		
		try {
			int sleepTime = new Random().nextInt(18000);
			System.out.println(sleepTime);
			
			Thread.sleep(sleepTime);
		} catch (InterruptedException e) {
			e.printStackTrace();
		}
		
		gotoPrevPage(webDriver);
	}

}
[/codesyntax]
  •  Python的Helloworld

Ubuntu下安裝Python對Selenium的支援:apt-get install python-selenium Windows下安裝Python對Selenium的支援:pip install selenium(對這一步有疑問的可以搜尋”Python開發環境搭建“) [codesyntax lang="python"]
#!/usr/bin/python

from selenium import webdriver
from selenium.webdriver.common.keys import Keys
import time

driver = webdriver.Chrome('/usr/lib/chromium-browser/chromedriver')
driver.get('http://surenpi.com')

time.sleep(3)

driver.close()
[/codesyntax] 將上面的內容儲存到檔案engine.py中(如果是在Linux系統下的話,使用命令chmod u+x engine.py給指令碼新增可執行許可權),然後執行,就可以看到瀏覽器被開啟並訪問了http://surenpi.com。
  • 結構

selenium-java-2.9.0.jar selenium-android-driver-2.9.0.jar selenium-remote-driver-2.9.0.jar selenium-chrome-driver-2.9.0.jar selenium-firefox-driver-2.9.0.jar selenium-ie-driver-2.9.0.jar selenium-iphone-driver-2.9.0.jar selenium-htmlunit-driver-2.9.0.jar selenium-api-2.9.0.jar selenium-support-2.9.0.jar 可以看到,selenium本身的模組劃分大致包含以上內容,也就是說對主流瀏覽器的支援是很好的。 而我們還看到有remote關鍵字,那就可以猜測到selenium還支援在遠端瀏覽器上執行自動化測試操作。
  • 日誌輸出

如果你的專案中採用的是log4j做為日誌的話,你可以新增如下配置就可以關閉大多數selenium的日誌輸出: log4j.logger.org.openqa.selenium=error
  • 參考

本站中有更多關於Selenium的API介紹 Microsoft WebDriver Chrome WebDriver

檢視原文:http://surenpi.com/2014/09/02/selenium/