Selenium WebDriver的使用(一),seleniumwebdriver

來源:互聯網
上載者:User

Selenium WebDriver的使用(一),seleniumwebdriver

Selenium WebDriver的相關介紹及資源下載:http://docs.seleniumhq.org/

在2016年2月份Selenium WebDriver更新到了2.52.0版本,建議在使用舊版本的更新至該版本,在穩定性和效能上提高不少。

Selenium支援驅動眾多的瀏覽器,包括PC、移動端及PhantomJS等。

以在windows下的JAVA開發環境為例,下載http://selenium-release.storage.googleapis.com/2.52/selenium-java-2.52.0.zip,解壓後添加到工程中。PC端建議使用Google Chrome和PhantomJS。PhantomJS可以理解為沒有介面的Safari(QtWebkit作為渲染引擎,JS引擎是JavascriptCore)。要使Selenium能驅動Google Chrome,還需要根據你的系統內容下載chromedriver,:https://sites.google.com/a/chromium.org/chromedriver/downloads。在本文撰寫的時候,chromedriver最新版本為2.21。需要注意的是,2.21版本支援Chrome的版本為v46-50,如果chromedriver和你使用的Chome版本不匹配,程式可能無法正常工作。

chromedriver下載解壓後,可以放在任意目錄,在程式中指定好環境變數路徑即可:

1 System.setProperty("webdriver.chrome.driver", System.getProperty("user.dir") + "\\driver\\chromedriver.exe");2 WebDriver webDriver = new ChromeDriver();3 webDriver.get("https://www.google.com/");

在驅動並啟動Google Chrome時,瀏覽器執行個體是不帶有任何使用者環境配置的,需要自己載入,舉個例子:

指定Google Chrome的緩衝目錄:

1 ChromeOptions options = new ChromeOptions();2 options.addArguments("--disk-cache-dir="+System.getProperty("user.dir")+"\\cache");3 WebDriver webDriver = new ChromeDriver(options);

command line flag如:

--start-maximized:啟動時最大化瀏覽器視窗;

--window-position=x,y:啟動時指定瀏覽器螢幕座標;

--window-size=w,h:啟動時指定瀏覽器寬高;

--disk-cache-size=s:指定瀏覽器可使用的磁碟緩衝大小;

--media-cache-size=1:指定媒體檔案緩衝大小;

--ignore-certificate-errors:忽略認證錯誤;

--disable-extensions:禁用擴充;

--disable-translate:禁用翻譯轉換;

更多的可參考:http://www.chromium.org/developers/how-tos/run-chromium-with-flags,http://peter.sh/experiments/chromium-command-line-switches/

另外一種方法是使用capabilities,參考:https://sites.google.com/a/chromium.org/chromedriver/capabilities

如果使用phantomjs,同樣的,指定好系統內容變數路徑即可:

1 System.setProperty("phantomjs.binary.path", System.getProperty("user.dir") + "\\driver\\phantomjs.exe");2 webDriver = new PhantomJSDriver();3 webDriver.get("https://www.google.com/");

在get()完成,接下來就可以操作瀏覽器、提取頁面內容了,比如:

提取頁面中的image:

1 WebElement webElement;2 List<WebElement> webElements;3 webElements = webDriver.findElements(By.cssSelector("body img"));4 for (webElement : webElements) {5     System.out.println(webElement.getAttribute("src"));6     System.out.println(webElement.getSize());7 };

Selenium WebDriver的API參考地址:http://selenium.googlecode.com/svn/trunk/docs/api/java/index.html

如果在get()的時候開啟了多個瀏覽器視窗,可通過switchTo().window(winHandle),切換到各視窗:

 1 String defaultWinHandle = webDriver.getWindowHandle(); 2 if (webDriver.getWindowHandles().size()>1) { 3     for(String winHandle : webDriver.getWindowHandles()){ 4         if (!winHandle.equals(defaultWinHandle)) { 5             webDriver.switchTo().window(winHandle); 6             //do something... 7             //close window: webDriver.close(); 8         }; 9     };10     webDriver.switchTo().window(defaultWinHandle);11 };

在操作完成後,退出:

1 webDriver.quit();

如果頁面中有iframe,如何可靠的切入切出?如果iframe還有嵌套怎麼辦?

待續!

原創文章,轉載請標明出處。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.