@
目錄
前言
- 本章內容需有一定Python基礎,如何不懂的,請先學習Python。
什么??沒有好的學習資料,給你准備好了!!
- 爆肝8萬字的Python基礎學習資料
- Python基礎入門視頻資料
- 以上資料都是本人親自錄制
Web自動化環境搭建
軟件准備
- python64位安裝包
- chrome64位瀏覽器&驅動
- 瀏覽器驅動下載
- 注意:chromedriver與chrome版本要對應。具體可查看該對應表
- 另外:本文主要以chromedirver為例
開始環境搭建
安裝python:雙擊自定義安裝 或者 在cmd中輸入python-3.7.0-amd64.exe的路徑,即在電腦中存放的位置,回車即可彈出安裝頁面,勾選Add Python 3.7 to PATH,即自動配置環境變量。
如圖:
下圖顯示安裝成功:
- 注:可以查看系統環境變量,發現D:\My pyhton3.7.0\Scripts;D:\My pyhton3.7.0;已經自動添加到了path中,這就是勾選Add Python 3.7 to PATH的效果.
python安裝完成后可以在cmd界面輸入python,會出現下圖內容,說明python安裝成功
- 安裝selenium:
- 在cmd中運行pip install selenium 即可在線安裝selenium,(ps:安裝指定的版本可用pip install selenium==3.14.0)如圖提示selenium安裝成功。
- 使用pip show selenium 查看selenium版本信息
- 安裝chrome瀏覽器
該處使用谷歌瀏覽器64位的版本號為70.0.3538.67 - 將chromedriver.exe放到python的安裝目錄下(或者目錄下的scripts下)
以上5步就搭建好python+selenium環境了
瀏覽器基本操作
前言
開始自動化測試之前,需了解瀏覽器的一些基本操作,以方便后續的自動測試。碼上開始吧!
導入Selenium模塊
from selenium import webdriver
瀏覽器基本操作
- 打開網站
#! /usr/bin/python3
# @Author : 一凡
from selenium import webdriver
url = "http://localhost:8080/Shopping/index.jsp"
# 也可以用其它瀏覽器:比如Firefox()等等
brower = webdriver.Chrome()
# 打開瀏覽器
brower.get(url)
- 設置休眠
#! /usr/bin/python3
# @Author : 一凡
from selenium import webdriver
import time
url = "http://localhost:8080/Shopping/index.jsp"
webdriver.Firefox
brower = webdriver.Chrome()
brower.get(url)
# 強制等待3秒
time.sleep(3)
- 頁面刷新
#! /usr/bin/python3
# @Author : 一凡
from selenium import webdriver
url = "http://localhost:8080/Shopping/index.jsp"
webdriver.Firefox
brower = webdriver.Chrome()
brower.get(url)
# 刷新頁面
brower.refresh()
- 前進和后退
#! /usr/bin/python3
# @Author : 一凡
from selenium import webdriver
import time
url = "http://localhost:8080/Shopping/index.jsp"
webdriver.Firefox
brower = webdriver.Chrome()
brower.get(url)
# 實際效果自己操作,當前就不做演式了
# 后退
brower.back()
# 前
brower.forward()
- 設置窗口大小
#! /usr/bin/python3
# @Author : 一凡
from selenium import webdriver
import time
url = "http://localhost:8080/Shopping/index.jsp"
webdriver.Firefox
brower = webdriver.Chrome()
brower.get(url)
# 設置窗口大小
brower.set_window_size(1280, 720)
# 設置全屏
# brower.maximize_window()
- 截屏
#! /usr/bin/python3
# @Author : 一凡
from selenium import webdriver
import time
url = "http://localhost:8080/Shopping/index.jsp"
webdriver.Firefox
brower = webdriver.Chrome()
brower.get(url)
brower.get_screenshot_as_file("./test.png")
# 退出瀏覽器進程
brower.quit()
- 退出
#! /usr/bin/python3
# @Author : 一凡
from selenium import webdriver
import time
url = "http://localhost:8080/Shopping/index.jsp"
webdriver.Firefox
brower = webdriver.Chrome()
brower.get(url)
time.sleep(3)
# 退出瀏覽器進程
brower.quit()
為什么要學習定位
- 讓程序操作指定元素,就必須先找到此元素;
- 程序不像人類用眼睛直接定位到元素;
- webDriver提供了八種定位元素的方式。
- 定位總結
- id、name、class_name、tag_name:根據元素的標簽或元素的屬性來進行定位
- link_text、partial_link_text:根據超鏈接的文本來進行定位(a標簽)
- xpath:為元素路徑定位--重點
- css:為css選擇器定位(樣式定位)
常見定位方式
id
- 說明:HTML規定id屬性在整個HTML文檔中必須是唯一的,id定位就是通過元素的id屬性來定位元素;
- 前提:元素有id屬性
- id定位方法:find_element_by_id()
- 實現案例-1需求:打開百度界面(https://www.baidu.com/),通過id定位,輸入信息,點擊百度的鈕
# -*- coding:utf-8 -*-
# @Author : 一凡
from selenium import webdriver
import time
url = "https://www.baidu.com/"
driver = webdriver.Chrome()
driver.get(url)
driver.find_element_by_id("kw").send_keys("好好學習|天天向上")
driver.find_element_by_id("su").click()
time.sleep(3)
driver.quit()
name
- 說明:HTML規定name屬性來指定元素名稱,name定位就是根據name屬性來定位
- 前提:元素有name屬性
- name定位方法:find_element_by_name()
- 實現案例-2需求:打開百度(https://www.baidu.com/),通過name定位
# -*- coding:utf-8 -*-
# @Author : 一凡
from selenium import webdriver
import time
url = "https://www.baidu.com/"
driver = webdriver.Chrome()
driver.get(url)
driver.find_element_by_name("wd").send_keys("好好學習|天天向上")
driver.find_element_by_id("su").click()
time.sleep(3)
driver.quit()
class_name
- 說明:HTML規定class來指定元素的類名,class定位就是根據class屬性來定位,用法和name,id類似。
- 前提:元素有class屬性
- class_name定位方法:find_element_by_class_name()
- 實現案例-3需求:打開百度界面(https://www.baidu.com/),通過class定位
# -*- coding:utf-8 -*-
# @Author : 一凡
from selenium import webdriver
import time
url = "https://www.baidu.com/"
driver = webdriver.Chrome()
driver.get(url)
driver.find_element_by_class_name("s_ipt").send_keys("好好學習|天天向上")
driver.find_element_by_id("su").click()
time.sleep(3)
driver.quit()
tag_name
- tag_name是通過標簽名稱來定位的,如:a標簽
- 注:由於HTML源碼中,經常會出現很多相同的的標簽名,所以一般不使用該定位方式
# -*- coding:utf-8 -*-
# @Author : 一凡
from selenium import webdriver
import time
# 這里使用優設導航的百度搜索界面
# 獲取瀏覽器對象
driver = webdriver.Chrome()
# 獲取網絡鏈接
url = "https://hao.uisdc.com/"
driver.get(url)
time.sleep(3)
# 獲取搜索輸入框,輸入:優設導航的百度搜索
driver.find_element_by_tag_name("input").send_keys("優設導航的百度搜索")
# 暫停3秒
time.sleep(3)
# 退出瀏覽器驅動
driver.quit()
link_text
- 說明:link_text定位於前面4個定位有所不同,它專門用來定位超鏈接文本(文本值)
- 前提:定位的元素是鏈接標簽(a標簽)
- link_text定位方法:find_element_by_link_text()
- 實現案例-5需求:打開百度首頁,通過link_text(鏈接文本)定位到【新聞】按鈕,並進行點擊操作
# -*- coding:utf-8 -*-
# @Author : 一凡
from selenium import webdriver
import time
url = "https://www.baidu.com/"
driver = webdriver.Chrome()
driver.get(url)
driver.find_element_by_link_text("新聞").click()
time.sleep(3)
driver.quit()
partial_link_text
- 說明:partial_link_text定位是對link_text定位的補充,partial_link_text為模糊匹配;link_text為全部匹配。
- 前提:定位的元素是鏈接標簽(a標簽)
- partial_link_text定位方法:find_element_by_partial_link_text()
- 通過傳入a標簽局部文本或全部文本來定位元素,要求輸入的文本能夠唯一找到這個元素
- 實現案例-6需求:打開百度新聞(http://news.baidu.com/),通過partial_link_text定位任何一條新聞,並進行點擊操作
# -*- coding:utf-8 -*-
# @Author : 一凡
from selenium import webdriver
import time
url = "http://news.baidu.com/"
driver = webdriver.Chrome()
driver.get(url)
driver.find_element_by_partial_link_text("守護藍色地球").click()
time.sleep(3)
# driver.quit()
元素組
- 元素組定位方式:find_elements_by_xxx
作用:- 查找返還定位所有符合條件的元素
- 返還的定位元素格式為列表格式
說明: - 列表數據格式的讀取需要指定下標(下標從0開始)
- 案例要求:打開百度頁面https://www.baidu.com/,通過元素組定位
- 定位:"//*[@id='s-top-left']/a"
# -*- coding:utf-8 -*-
# @Author : 一凡
from selenium import webdriver
url = "https://www.baidu.com/"
driver = webdriver.Chrome()
driver.get(url)
path = "//*[@id='s-top-left']/a"
elements = driver.find_elements_by_xpath(path)
# 返回列表
print(len(elements))
# 通過列表方法獲取相應的元素進行點擊
elements[0].click()
如果想學習軟件測試,就快加入:893694563,群內學軟件測試,分享技術和學習資料,陪你一起成長和學習。
碼字不易,小伙伴如果看到最后,煩請來個三連,謝謝拉~