目錄
1、selenium介紹
2、selenium的作用:
?3、配置瀏覽器驅動環境及selenium安裝
4、selenium基本語法
4.1、selenium元素的定位
4.2、selenium元素的信息
4.3、selenium元素的交互
5、Phantomjs介紹
6、chrome handless模式
?
1、selenium介紹
(1)selenium是一個用于web應用程序測試的工具。
(2)selenium測試直接運行在瀏覽器中,就像真正的用戶在操作一樣。
(3)支持通過各種driver(FirfoxDriver,IternetExplorerDriver,OperaDriver,ChromeDriver)驅動真是瀏覽器完成測試。
(4)selenium也是支持無界面瀏覽器操作的。
2、selenium的作用:
(1)可以模擬用戶在瀏覽器中的各種操作,如點擊按鈕、輸入文本、提交表單等,用于對web應用程序進行功能測試,回歸測試等。
(2)可以用于自動化一些重復性的網頁操作任務,如批量上傳文件、定時執行任務,提高工作效率。
(3)爬取一些我們無法獲取的數據,比如京東上的限時秒殺數據等等。?
?3、配置瀏覽器驅動環境及selenium安裝
(1)操作chrome瀏覽器下載
瀏覽器的驅動要下載和瀏覽器配套的版本。將下載的瀏覽器驅動放到python的安裝目錄下,并配置系統環境變量。
安裝地址:官網?
(2)selenium的安裝
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple selenium
(3)測試瀏覽器驅動是否正常
from selenium import webdriver
# 創建瀏覽器操作對象
driver = webdriver.Chrome()
driver.get('http://www.baidu.com')
input()
4、selenium基本語法
4.1、selenium元素的定位
元素定位:自動化要做的就是模擬鼠標和鍵盤來操作這些元素,點擊、輸入等等。操作這些元素首先要找到他們,webdriver提供很多元素定位的方法。
(1)id可以唯一定位到一個元素(以百度的百度一下四個字為例)
button =driver.find_element(By.ID,"su")
(2)name要確保是全局唯一的(以百度的文本搜索框為例)
button = driver.find_element(By.NAME,"wd")
(3)xpath全局唯一
button = driver.find_element(By.XPATH,"//input[@id='su']")
(4)tag name標簽,即標簽名字
button = driver.find_element(By.TAG_NAME,"input")
(5)css selector元素樣式(通過bs4的語法來獲取對象)
button = driver.find_element(By.CSS_SELECTOR, '#su')
(6)link text獲取鏈接文本
button = driver.find_element(By.LINK_TEXT, '新聞')
4.2、selenium元素的信息
(1)通過get_attribute來獲取class的屬性值
input = driver.find_element(By.ID, 'su')
print(input.get_attribute('class'))
(2)通過text獲取元素文本(只能獲取兩個標簽之間的數據哦)
a = driver.find_element(By.LINK_TEXT, '新聞')
print(a.text)
(3)通過tag_name獲取標簽名
input = driver.find_element(By.ID, 'su')
print(input.tag_name)
4.3、selenium元素的交互
?(1)click點擊對象(以點擊百度一下按鈕為例)
button = driver.find_element(By.ID,"su").click()
(2)send_keys在對象上模擬按鍵輸入(搜索框中輸入周杰倫)
input = driver.find_element(By.ID,"kw").send_keys("周杰倫")
(3)滑到底部
js_bottom = "document.documentElement.scrollTop=10000"
driver.execute_script(js_bottom)
(4)回退選項
driver.back()
(5)返回上一選項
driver.forward()
案例:在百度搜索框中搜索周杰倫,翻到最后一頁,打開下一頁,回退選項,在返回上一選項。最后退出瀏覽器
from selenium import webdriver
import time
from selenium.webdriver.common.by import By
driver = webdriver.Chrome()
url = "https://www.baidu.com"
driver.get(url)
time.sleep(2)
input = driver.find_element(By.ID,"kw").send_keys("周杰倫")
time.sleep(2)
button = driver.find_element(By.ID,"su").click()
time.sleep(2)
js_bottom = "document.documentElement.scrollTop=10000"
driver.execute_script(js_bottom)
time.sleep(2)
# 獲取下一頁的按鈕
next_button = driver.find_element(By.XPATH,"//a[@class='n']").click()
time.sleep(2)
# 回退,回到上一頁
driver.back()
time.sleep(2)
# 返回上一選項
driver.forward()
time.sleep(5)
driver.quit()
?
5、Phantomjs介紹
(1)是一個無界面的瀏覽器
(2)支持頁面元素查找,js的執行等
(3)由于不進行css和gui渲染,運行效率要比真實的瀏覽器要快很多
?但是Phantomjs這個公司已經黃了,維護者已經辭職并停止維護了,因此這里就不講解了。
6、chrome handless模式
chrome-handless模式,Google針對chrome瀏覽器59版本新增加的一種模式,可以在不打開UI界面的情況下使用chrome瀏覽器,所以運行效果與chrome保持一致。?
系統要求:
? ? ? ? chrome:
? ? ? ? ? ? ? ? Unix/Linux 系統需要 chrome >=59
? ? ? ? ? ? ? ? windows 系統需要 chrome >=60
? ? ? ? python版本 >=3.6
? ? ? ? selenium版本 >=3.4.*
? ? ? ? chromedriver版本 >=2.31
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.chrome.options import Options
chrome_options = Options()
chrome_options.add_argument('--headless')
chrome_options.add_argument('--disable-gpu')
driver = webdriver.Chrome(options=chrome_options)
url = "https://www.baidu.com"
driver.get(url)
driver.save_screenshot("screenshot.png")
?但這樣每次都需要配置的話會比較麻煩,我們只要封裝到函數里面,那么每次用只需要調用函數
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
def share_browser():chrome_options = Options()chrome_options.add_argument('--headless')chrome_options.add_argument('--disable-gpu')driver = webdriver.Chrome(options=chrome_options)return driver
driver = share_browser()
?