自動化測試Python+Selenium(一)

2020-08-10 18:23:45


鏈接: 參考

一、selenium基礎

1、selenium簡介

是一個用於測試網站的自動化測試工具,支援各種瀏覽器包括Chrome、Firefox、Safari等主流介面瀏覽器,同時也支援phantomJS無介面瀏覽器。

2、安裝selenium

在Windows命令提示字元(cmd)下輸入

pip install selenium

3、安裝瀏覽器驅動

如果想使用selenium驅動不同的瀏覽器,必須單獨下載並設定不同的瀏覽器驅動。

我用的是Firefox瀏覽器驅動: geckodriver

4、設定瀏覽器驅動

(1)選擇合適的驅動程式,下載完成後將其解壓,開啓解壓之後的檔案
(2)查詢Python的安裝目錄,將準備好的geckodriver.exe檔案放到這個目錄下

二、selenium元素定位

1、8種定位方式

專案 Value
find_element_by_id() 通過元素id定位
find_element_by_name() 通過元素name定位
find_element_by_xpath 通過xpath表達式定位
find_element_by_class_name() 通過類名定位
find_element_by_link_text() 通過完整超鏈接定位
find_element_by_partial_link_text() 通過部分鏈接定位
find_element_by_tag_name 通過標籤定位
find_element_by_css_selector() 通過css選擇器定位

2、定位的用法

假如我們有一個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">

我們的目的是要定位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']")

通過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")

三、WebDriver常用方法

1、點選和輸入

方法

  • clear():清除文字
  • send_keys():模擬按鍵輸入
  • click():單擊元素

範例

from selenium import webdriver 	                        #匯入Selenium WebDriver模組
driver = webdriver.Firefox()            	            #新建物件並啓動瀏覽器
driver.get("https://www.baidu.com")                     #呼叫get方法開啓一個網頁  
driver.find_element_by_id("kw").clear()	                #通過clear方法來清理文字
driver.find_element_by_id("kw").send_keys("selenium")	#輸入文字內容
driver.find_element_by_id("su").click()             	#進行單擊操作

2、其他常用方法

  • size:返回元素的尺寸
  • text:獲取元素的文字
  • get_attribute(name):獲取屬性值
  • is_displayed():設定該元素是否爲使用者可見

範例

from selenium import webdriver
driver = webdriver.Firefox()
driver.get("https://www.baidu.com")
size = driver.find_element_by_id('kw').size
print(size)			#獲取百度輸入框的寬、高
text = driver.find_element_by_id("bottom_layer").text
print(text)			#獲取百度底部的備案資訊
attribute = driver.find_element_by_id("kw").get_attribute('type')
print(attribute)	#獲取百度輸入的type屬性的值
result = driver.find_element_by_id("kw").is_displayed()
print(result)		#返回元素是否可見
driver.quit()

輸出結果

在这里插入图片描述