一、Selenium基礎介紹及安裝
1、Selenium簡介
Selenium是一個用於測試網站的自動化測試工具,支持各種瀏覽器包括Chrome、Firefox、Safari等主流界面瀏覽器,同時也支持phantomJS無界面瀏覽器。
2、安裝Selenium
pip install Selenium
3、安裝瀏覽器驅動
當selenium升級到3.0之後,對不同的瀏覽器驅動進行了規範。如果想使用selenium驅動不同的瀏覽器,必須單獨下載 並設置不同的瀏覽器驅動。
各瀏覽器下載地址:
Firefox瀏覽器驅動:geckodriver
Chrome瀏覽器驅動:chromedriver , taobao備用地址
IE瀏覽器驅動:IEDriverServer
Edge瀏覽器驅動:MicrosoftWebDriver
Opera瀏覽器驅動:operadriver
PhantomJS瀏覽器驅動:phantomjs
注:部分瀏覽器驅動地址需要科學上網。windows配置瀏覽器驅動環境
ubuntu環境下載解壓後,放到/usr/bin
二、Selenium 快速入門
1、selenium元素定位用法
假如我們有一個Web頁面,通過前端工具(如,Firebug)查看到一個元素的屬性是這樣的。
<html>
<head>
<body link="#0000cc">
<a id="result_logo" href="/" onmousedown="return c({'fm':'tab','tab':'logo'})">
<form id="form" class="fm" name="f" action="/s">
<span class="soutu-btn"></span>
<input id="kw" class="s_ipt" name="wd" value="" maxlength="255" autocomplete="off">
<form/>
<body/>
<head/>
<html/>
我們的目的是要定位input標籤的輸入框。
- 通過id定位:
dr.find_element_by_id("kw")
- 通過name定位:
dr.find_element_by_name("wd")
- 通過class name定位:
dr.find_element_by_class_name("s_ipt")
- 通過tag name定位:
dr.find_element_by_tag_name("input")
- 通過xpath定位,xpath定位有N種寫法,這裏列幾個常用寫法:
dr.find_element_by_xpath("//*[@id='kw']")
dr.find_element_by_xpath("//*[@name='wd']")
dr.find_element_by_xpath("//input[@class='s_ipt']")
dr.find_element_by_xpath("/html/body/form/span/input")
dr.find_element_by_xpath("//span[@class='soutu-btn']/input")
dr.find_element_by_xpath("//form[@id='form']/span/input")
dr.find_element_by_xpath("//input[@id='kw' and @name='wd']")
- 通過css定位,css定位有N種寫法,這裏列幾個常用寫法:
dr.find_element_by_css_selector("#kw")
dr.find_element_by_css_selector("[name=wd]")
dr.find_element_by_css_selector(".s_ipt")
dr.find_element_by_css_selector("html > body > form > span > input")
dr.find_element_by_css_selector("span.soutu-btn> input#kw")
dr.find_element_by_css_selector("form#form > span > input")
接下來,我們的頁面上有一組文本鏈接。
<a class="mnav" href="http://news.baidu.com" name="tj_trnews">新聞</a>
<a class="mnav" href="http://www.hao123.com" name="tj_trhao123">hao123</a>
- 通過link text定位:
dr.find_element_by_link_text("新聞")
dr.find_element_by_link_text("hao123")
- 通過link text定位:
dr.find_element_by_partial_link_text("新")
dr.find_element_by_partial_link_text("hao")
dr.find_element_by_partial_link_text("123")